Dekoratörler hakkında konuşmanın zamanı geldi.
Ve şimdi de Python'daki anahtar terimleri.
Ve aslında daha önce de dekoratörler gördük.
Sınıfları inşa ettiğimiz zamanı hatırlıyor musun?
Size bir sınıf yöntemi ve bir statik yöntem olduğunu öğrettim.
Ben de "Hey, yapma." dedim.
Bunun için endişelenme.
Bu konuyu daha sonra konuşacağız.
Bu artık daha sonra.
Dekoratörler şöyle görünür.
Ekleme işareti ve ardından gelen bir tür isim var.
Ancak dekoratörlerin ne olduğunu tam olarak anlayabilmemiz için Python'daki fonksiyonlardan ve neden bu kadar güçlü olduklarından
bahsetmemiz gerekiyor.
Python'da Python ile ilgili en güzel şey budur.
Fonksiyonlar, birinci sınıf vatandaş dediğimiz şeydir.
Yani, değişkenler gibi aktarılabilirler.
Bir fonksiyonun içinde bir argüman olabilirler.
Tıpkı değişkenler gibi davranıyorlar.
Sana göstereyim.
Eğer bir hello fonksiyonu oluşturursam, ki açıkçası bu tamamen işe yaramaz.
Çünkü tek yaptığı merhaba demek.
Eğer bunu yaparsam.
Python'da fonksiyonların hemen hemen sadece değişkenler olduğunu söylediğimi hatırlayın.
Yine, tüm programlama dillerinde her zaman geçerli olmayan bir şey.
Yani eğer isteseydim, selamlama eşittir iki diyebilirdim.
Merhaba.
Böylece eğer selam yazdırırsam.
Ve bunu çalıştırıyorum.
Anladım.
Alo?
Ya geçersem?
Alo?
Bunun gibi mi?
Eğer bunu çalıştırırsam.
Bellekteki işlev konumunu alıyorum, bu yüzden bu şekilde grit kullanmam ve doğru şekilde çalıştırmam gerekiyor.
Merhaba fonksiyonunu çağırmamız gerekiyor.
Tamam.
Bunu yaparsak ne olur?
Ya sil dersem?
Merhaba.
Python'da bu işlevi silen bir anahtar sözcük.
Sizce ne olacak?
Bakalım bunu çalıştırabilecek miyim.
Hmm.
Beklediğin bu muydu?
Grete'in hala çalışmasını mı bekliyordun?
Python ile ilgili ilginç olan şey, ben hello'yu yaratıyorum ve bu artık bellekte yaratılıyor.
Dördüncü satıra geldiğimizde, hey, selam merhabayı gösterecek diyorum.
Yani merhaba hala buraya çağrılabilir.
Hala merhaba diyebilirim.
Çünkü hello, bellekte o konuma işaret eden işlevin adıdır.
Ancak hello'yu sildiğimde, tek yaptığı, hey, bu işlevi, bellekteki bu işleve yapılan bu isim referansını
sileceğim demek oluyor.
Ancak, selamlama nedeniyle başka bir değişken hala bu işlevi işaret etmektedir.
Merhaba kelimesini sileceğim.
Yani böyle merhaba dersem?
Bir hata ismi alacağım.
Ancak merhaba tanımlanmamıştır.
Selamlama hala bellekte bu konuma işaret etmektedir.
Yani Python şunu diyecek kadar akıllıdır: Hey, bana hello'yu silmemi söyledin, ben de hello adını sileceğim.
Ancak fonksiyonu silmeyeceğim çünkü Grete hala ona işaret ediyor.
Yani Python'daki fonksiyonlar tıpkı değişkenler gibi davranır.
Onlar birinci sınıf vatandaş.
Fonksiyonları da aktarabiliriz.
Tartışmaların içinde, değil mi?
Eğer merhaba dersem ve sonra bu merhaba, diyelim ki çağıran başka bir fonksiyon alırsa.
Bu şekilde çalış.
Diyelim ki bir selamlama fonksiyonu oluşturabilirim.
Selamlaşmayı tanımlayın.
Ve bu fonksiyon sadece yazdıracak.
Hala buradayım.
Ararsam hemen buraya gel.
Alo?
ile.
Selamlar.
Ya da açıklığa kavuşturmak için a eşittir iki diyelim.
Merhaba, selam.
Ve eğer bir tane basarsam, ne olacak?
Bu hala işe yarıyor çünkü olan şey, hey, fonksiyonu çağır demek.
Alo?
Fonksiyonu çağırıyorum.
Selamlama argümanı ile merhaba.
Bu yüzden buraya gidiyoruz ve hey fonksiyonu çalıştır ve fonksiyon nedir diyoruz.
Bu fonksiyonu doğru çağırmak istiyoruz çünkü bu parantezler var, böylece bizim durumumuzda harika olan
fonksiyona atlıyoruz.
Buraya gidip "Hey, bunu yazdır" diyeceğiz.
Burada çağırmamıza gerek yoktu çünkü hello fonksiyonu bizim için çağırıyordu.
Peki neden sana tüm bunları öğrettim?
Bunun dekoratörlerle ne ilgisi var?
Dekoratörler sadece bu özellikler sayesinde mümkündür, fonksiyonların değişkenler gibi davranma yeteneği Python'da birinci
sınıf vatandaş gibi davranır.
Kaputun altındaki dekoratörleri öğrenmeye başladığımızda, fonksiyonların bu gücünü kullanıyorlar.
Şimdi ve sonra gelecek videolar.
Kendi dekoratörümüzü nasıl yaratacağımız, ne anlama geldikleri hakkında konuşacağız ve bu dekoratör fikrini genişleteceğiz.
Ama işte dekoratörlerin ne yaptığının kısa bir şekli.
Dekoratörler işlevimizi güçlendirir.
Burada bir merhaba diyelim fonksiyonumuz olsaydı.
Bunun gibi bir dekoratör ekleyerek fonksiyonumuzu güçlendirebilir ve ona ekstra işlevsellik ekleyebiliriz.
Python yorumlayıcısına bu hello fonksiyonunun bazı ekstra özelliklere sahip olmasını istediğimi bildirir.
Ancak bir sonraki videoda bu konuyu biraz daha inceleyelim.