CodeBlanks Logo Icon CodeBlanks

functools.partial

functools.partial ile kısmı uygulama öğrenirsin.

functools.partial

functools.partial, bir fonksiyona bazı argümanları önceden bağlayıp yeni bir çağrılabilir döndürür. Bu teknik currying ya da partial application olarak geçer.

Örnek: def power(base, exp): olsun. square = partial(power, exp=2) yazarsan square(5) çağrısı power(5, exp=2) anlamına gelir.

from functools import partial

def power(base, exp):
    return base ** exp

square = partial(power, exp=2)
print(square(5))  # 25

Bağlanmamış argümanlar çağrı sırasında verilir; bağlananlar sabit kalır.

partial ile yapılandırma

partial, sabit ayarlarla hazır çağrılabilirler yaratmak için kullanışlıdır. Örneğin bir günlük (log) fonksiyonu log(level, message) imzasına sahipse, info = partial(log, level="INFO") ile sadece mesaj alan kısa bir çağrılabilir elde edersin.

Bu, sınıf yazmadan hafif bir özelleştirme sunar. info("sunucu başladı") çağrısı log("INFO", "sunucu başladı") anlamına gelir.

Konumsal ve anahtar sözcük argümanları birlikte bağlanabilir; çağrı sırasında kalanlar iletilir.

Uygulama partial ile kare ve küp fonksiyonları

power(base, exp) fonksiyonu base ** exp döndürsün. partial ile square (exp=2) ve cube (exp=3) adında iki çağrılabilir oluştur. print(square(5)) ve print(cube(2)) ile sonuçları yazdır.

Başlangıç kodu

main.py
from functools import partial

# power taban ve üs alır; üs işlemini döndürür
# square ve cube'u partial ile üs bağlayarak tanımla
# sonuçları ekrana yazdır

Örnek çözüm

main.py
from functools import partial

def power(base, exp):
    return base ** exp

square = partial(power, exp=2)
cube = partial(power, exp=3)
print(square(5))
print(cube(2))

Beklenen çıktı

25
8

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 partial(power, exp=2) ne döndürür?

  • power(2) çağrısının sonucunu
  • power fonksiyonunun kendisini
  • 2 üssü base değerini
  • exp'i 2'ye bağlanmış yeni bir çağrılabilir Doğru cevap

Açıklama: partial yeni bir çağrılabilir döndürür; exp=2 önceden bağlanmıştır, base çağrıda verilir.

2 partial çağrısını tamamla

Soru
from functools import partial

def power(base, exp):
    return base ** exp

cube = ____(power, exp=3)
print(cube(2))
Cevap
from functools import partial

def power(base, exp):
    return base ** exp

cube = partial(power, exp=3)
print(cube(2))

Açıklama: partial(power, exp=3) cube'ü üssü 3 olan çağrılabilir yapar.

3 partial kavramlarını eşleştir

Kavram Anlamı
partial(power, exp=2) exp bağlanır
square(5) base 5 olur
curry Aşamalı bağlama
square Yeni çağrılabilir

İleri seviye bölümündeki tüm dersler