Python
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.
Örnek çözümü göster
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))
Kendini test et
-
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
Cevabı göster
exp'i 2'ye bağlanmış yeni bir çağrılabilir — partial yeni bir çağrılabilir döndürür; exp=2 önceden bağlanmıştır, base çağrıda verilir.
-
partial çağrısını tamamla
from functools import partial
def power(base, exp):
return base ** exp
cube = ____(power, exp=3)
print(cube(2))
Cevabı göster
from functools import partial
def power(base, exp):
return base ** exp
cube = partial(power, exp=3)
print(cube(2))
-
partial kavramlarını eşleştir
- partial(power, exp=2)
- exp bağlanır
- square(5)
- base 5 olur
- curry
- Aşamalı bağlama
- square
- Yeni çağrılabilir
Sıradaki ders: functools.reduce