functools.partial
- Python kursu
- İleri seviye
- Ders 4/83
- 5 dk
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)) # 25Bağ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
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
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
from functools import partial
def power(base, exp):
return base ** exp
cube = ____(power, exp=3)
print(cube(2))
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 |