decorator
-
python'da, bir fonksiyonda başka fonksiyonların işlevlerini kullanmak istediğimizde işlevleri kullanılmak istenen fonksiyonlar decorator olarak yazılabilir. işlevlerini kullanmak istediğimiz fonksiyonlar, işlevlerin geçerli olacağı fonksiyonun tanımlanacağı satırdan bir önceki satıra, başına @ işareti gelecek şekilde birlikte yazılır.
bir fonksiyona birden fazla decorator eklenebilir. çalışmaya başlayacak ilk decorator, fonksiyona en yakın olan decoratör olur.
yani aşağıdaki ifadede önce decorator1'deki işlem yapılır, sonra decorator2'ye geçilir, en son da decorator3'ün işlemi yapılır.
@decorator3
@decorator2
@decorator1
def fonksiyon(arguman): return arguman
decorator'ler argüman alarak da fonksiyonlara eklenebilirler.
örneğin:
def karakter_ekle(karakter):
def inner(func):
def wrapper(*args, **kwargs):
return func(*args, **kwargs) + " " + karakter
return wrapper
return inner
def karakteri_buyut(func):
def wrapper(*args, **kwargs):
return func(*args, **kwargs).upper()
return wrapper
@karakter_ekle(karakter="world")
@karakteri_buyut
def fonksiyon(parametre): return parametre
print(fonksiyon("hello"))
yukarıdaki kodlara göre, önce hello karakter dizisi karakter_buyut bezeyicisi ile büyütülür. daha sonra world karakter dizisini argüman olarak alan karakter_ekle bezeyicisi ile büyük harflerden oluşan hello yazısının yanına, bir adet boşluk ve küçük harflerle world yazısı getirilir.
ekşi sözlük kullanıcılarıyla mesajlaşmak ve yazdıkları entry'leri
takip etmek için giriş yapmalısın.
hesabın var mı? giriş yap