6 entry daha
  • 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.
1 entry daha
hesabın var mı? giriş yap