Python Syntax
Coddy'nin Python Dekoratörleri kursunda ders 6 / 12.
Önceki derste, fonksiyon dekoratörlerinin nasıl oluşturulacağını gördük, ancak Python bu işlevselliği elde etmek için @ sembolünü kullanarak çok daha zarif bir yol sunar.
Örneğin,
def my_decorator(func):
def wrapper():
print("Before function is called.")
func()
print("After function is called.")
return wrapper
@my_decorator
def my_function():
print("Inside my_function.")my_function() fonksiyonunu çalıştırdığımızda, şuna benzer bir çıktı göreceğiz:
Before function is called.
Inside my_function.
After function is called.Bu, dekoratör fonksiyonu my_decorator'ın, my_function çağrılmadan önce ve sonra bazı ek kodlar ekleyerek davranışını değiştirebildiğini gösterir.
Görev
KolaySize bir add fonksiyonu kodu verilmiştir.
Göreviniz, son derste olduğu gibi ancak bazı eklemelerle birlikte debug adında bir fonksiyon dekoratörü yazmaktır:
debugfonksiyon dekoratörünü@sembolünü kullanarakaddfonksiyonuna ekleyin.- Debug fonksiyonu, fonksiyon argümanlarını desteklemelidir.
Bir dekoratörde argümanlı fonksiyonları desteklemek için,
def my_decorator(func):
def wrapper(a, b):
print("Before function is called.")
func(a, b)
print("After function is called.")
return wrapperÖrnek:
Bir add(2, 3) fonksiyon çağrısı için şunlar yazdırılmalıdır,
Calling add with arguments (2, 3)
add returned: 5Kendin dene
# Buraya kod yazın
def add(a, b):
return a + bPython Dekoratörleri bölümündeki tüm dersler
Kendi başına pratik yap: Online Python derleyicisi