Kısmi İşlevler
functools.partial kullanın
Kısmi İşlevler, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.
partial nedir?
functools.partial, mevcut bir işlevin bazı bağımsız değişkenleri önceden doldurulmuş yeni bir işlev oluşturur. Bu, bağımsız değişkenleri önceden yüklemek gibidir; böylece sonucu daha az bağımsız değişkenle çağırabilirsiniz.
from functools import partial ile içe aktarın.
from functools import partial
def power(base, exp):
return base ** exp
square = partial(power, exp=2)
print(square(5))Konumsal bağımsız değişkenleri sabitleme
partial işlevine aktarılan konumsal bağımsız değişkenler, işlevin parametrelerini soldan başlayarak doldurur. Kalan bağımsız değişkenler partial çağrılırken sağlanır.
from functools import partial
def multiply(a, b):
return a * b
double = partial(multiply, 2)
print(double(10))
print(double(50))Anahtar sözcüğü bağımsız değişkenlerini sabitleme
partial işlevine verilen anahtar sözcüğü bağımsız değişkenleri, çağrı sırasında hâlâ üzerine yazabileceğiniz varsayılan değerlere dönüşür.
from functools import partial
def greet(name, greeting='Hello'):
return greeting + ', ' + name
hola = partial(greet, greeting='Hola')
print(hola('Ada'))
print(hola('Bob', greeting='Hey'))Yerleşik işlevlerle partial
Yerleşik işlevler için de partial oluşturabilirsiniz. Burada int kullanarak taban-2 tamsayı ayrıştırıcısı oluşturuyoruz.
from functools import partial
binary = partial(int, base=2)
print(binary('1010'))
print(binary('1111'))Daha temiz geri çağrılar
Bağlamı önceden yüklemek istediğiniz, ancak bağımsız değişken almayan veya tek bağımsız değişken alan bir işlev aktarmanız gereken geri çağrılar için partial işlevleri çok kullanışlıdır.
from functools import partial
def log(level, message):
return '[' + level + '] ' + message
error = partial(log, 'ERROR')
print(error('disk full'))map içinde partial
partial, map gibi üst düzey işlevlere sorunsuzca yerleşir; bir bağımsız değişkeni sabitlerken diğerinin her öğeye göre değişmesini sağlar.
from functools import partial
def add(a, b):
return a + b
add10 = partial(add, 10)
print(list(map(add10, [1, 2, 3])))Bir partial işlevi inceleme
Bir partial nesnesi, sarmalanmış işlevi .func üzerinden, sabit konumsal bağımsız değişkenleri .args üzerinden ve sabit anahtar sözcüğü bağımsız değişkenlerini .keywords üzerinden sunar.
from functools import partial
def f(a, b, c):
return (a, b, c)
p = partial(f, 1, c=3)
print(p.func.__name__)
print(p.args)
print(p.keywords)Partial işlevlerini zincirleme
Bir partial işlevden başka bir partial işlev oluşturabilir, sabit bağımsız değişkenleri adım adım katmanlandırabilirsiniz.
from functools import partial
def volume(l, w, h):
return l * w * h
base = partial(volume, 2)
slab = partial(base, 3)
print(slab(4))partial ile anonim işlev karşılaştırması
lambda aynı işi yapabilir; ancak partial, bağımsız değişkenleri sabitleme konusunda çoğu zaman daha açıktır ve sarmalanmış işlevi iç gözlem için sunar.
from functools import partial
def power(base, exp):
return base ** exp
cube_p = partial(power, exp=3)
cube_l = lambda b: power(b, 3)
print(cube_p(2), cube_l(2))Gerçek bir örnek: yuvarlama
Yerleşik round işlevi için partial oluşturarak iki ondalık basamaklı bir yuvarlama işlevi yapın.
from functools import partial
round2 = partial(round, ndigits=2)
print(round2(3.14159))
print(round2(2.71828))Sınıflar için partialmethod
İlgili functools.partialmethod, sınıf tanımı içindeki yöntemler için aynı işi yapar ve bir yöntemin bağımsız değişkenlerini önceden doldurur.
from functools import partialmethod
class Light:
def set(self, state):
self.state = state
return state
on = partialmethod(set, True)
off = partialmethod(set, False)
l = Light()
print(l.on())
print(l.off())Hızlı Kontrol
functools.partial ne yapar?
Özet: Partial İşlevleri
functools.partial ile şunları öğrendiniz:
- Önceden doldurulmuş bazı bağımsız değişkenlere sahip yeni bir işlev oluşturur (konumsal veya anahtar sözcüğü).
- Önceden belirlenmiş anahtar sözcüğü varsayılan değerlerinin çağrı sırasında üzerine yazılmasına izin verir.
- Geri çağrılar,
mapve tekrarı azaltmak için idealdir. .func,.argsve.keywordsözelliklerini sunar; ayrıcapartialmethodadlı bir yöntem varyantına sahiptir.
from functools import partial
add = lambda a, b: a + b
plus1 = partial(add, 1)
print(plus1(41))Sıkça Sorulan Sorular
“Kısmi İşlevler” dersi ücretsiz mi?
Evet — “Kısmi İşlevler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.
“Kısmi İşlevler” dersinde ne öğreneceğim?
functools.partial kullanın Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Python Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Kısmi İşlevler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Birinci Sınıf İşlevler
- Kapanımlar ve Serbest Değişkenler
- nonlocal ve Değiştirilebilir Durum
- Kısmi İşlevler