Python dekoratörlerini kullanın
Dekoratörler, kodlarını değiştirmeden mevcut işlevlere ve sınıflara işlevsellik eklemek için kullanılabilecek güçlü bir araçtır. Günlüğe kaydetme, önbelleğe alma ve doğrulama gibi görevler için kullanılabilirler ve kodunuzu düzenli ve bakımlı tutmanıza yardımcı olabilirler.
Peki.. dekoratörler nedir?
Dekoratör, bağımsız değişkeni olarak başka bir işlevi alan ve yeni bir işlev döndüren özel bir işlev türüdür. Yeni işlev genellikle orijinal işlevin değiştirilmiş bir sürümüdür ve genellikle ek işlevler eklemek için kullanılır.
nasıl kullanılır?
Bir işleve veya sınıfa, işlev veya sınıf tanımından önce “@” simgesi ve ardından dekoratör işlev adının yerleştirilmesiyle bir dekoratör uygulanır.
Bir işleve günlüğe kaydetme işlevi ekleyen basit bir dekoratör örneği:
def log_decorator(func):
def wrapper(*args, **kwargs):
print("Calling function:", func.__name__)
result = func(*args, **kwargs)
print("Function returned:", result)
return result
return wrapper
@log_decorator
def my_function(x, y):
return x + y
my_function(1, 2)
Bu kodun çıktısı şöyle olacaktır:
Calling function: my_function
Function returned: 3
Doz dekoratörleri değerleri alabilir mi?
Evet! Ayrıca argümanları dekoratörlere çok kolay bir şekilde iletebilirsiniz.
def repeat(num):
def repeat_decorator(func):
def wrapper(*args, **kwargs):
for i in range(num):
result = func(*args, **kwargs)
return result
return wrapper
return repeat_decorator
@repeat(num=3)
def my_function(x):
return x * x
print(my_function(3))
Hatırlamak?
dekoratörler, başka bir işlevi bağımsız değişken olarak alan ve işlevsellik eklemek için kullanılan, genellikle orijinal işlevin değiştirilmiş bir sürümü olan yeni bir işlev döndüren özel işlev türleridir. İşlev veya sınıf tanımından önce “@” simgesi ve ardından dekoratör işlev adının yerleştirilmesiyle bir işleve veya sınıfa uygulanırlar. Dekoratörün davranışını daha da özelleştirmek için bağımsız değişkenler de alabilirler.
İyi şanslar Şilo

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































