Ana sayfa Genel Python – Decorator Fonksiyonlar

Python – Decorator Fonksiyonlar

6958
255
PAYLAŞ

Decorator Fonksiyonlar

İç içe Fonksiyonlar ve Fonksiyon Parametreleri

Bu bölümle birlikte decorator fonksiyonların mantığını anlamaya çalışacağız. Decoratorları daha iyi anlamak için fonksiyonlara biraz daha derinlemesine bakmaya çalışalım.

*args ve **kwargs

Fonksiyonlara argüman göndermenin esnek bir şekilde yapıldığını biliyoruz. İsterseniz ilk olarak yıldızlı argümanları hatırlamaya çalışalım.

Şimdi de yeni öğreneceğimiz keyword argümanlara bakalım.

Dikkat ederseniz 2 yıldız koyarak keyword argümanlar ile (anahtar kelimeli argümanlar) fonksiyonumuzu tanımladık ve argümanlara isim vererek fonksiyonumuzu çağırdığımızda isimleri anahtar kelime , argüman değerlerini değer olarak alarak fonksiyonumuz sözlük oluşturdu. İşte keyword argümanlar bu şekilde kullanılabiliyor.

Şimdi de *args ve **kwargs argümanlarını beraber kullanalım.

İç içe fonksiyonlar

Pythonda fonksiyonlar da birer obje oldukları için hem bir tane değişkene atanabilirler, hem de başka bir fonksiyonun içinde tanımlanabilirler. Şimdi bunlara bakmaya başlayalım.

Şimdi de isterseniz iç içe fonksiyon tanımlamayı öğrenelim.

Fonksiyonları Dönmek ve Argüman Olarak Göndermek

Bu konuda fonksiyonları return ile başka bir fonksiyondan dönmeyi ve diğer fonksiyonlara parametre olarak göndermeyi öğreneceğiz.

Fonksiyonları return ile Dönmek

Bir fonksiyon aynı zamanda bir obje olduğu için, bu fonksiyonu başka bir fonksiyondan return ile döndürebiliriz.

İşte bu şekilde fonksiyonlarımızı da tıpkı diğer değişkenler gibi başka bir fonksiyon içinde tanımlayıp , çağırdığımız yere dönebiliriz.

Fonksiyonları Argüman Olarak Göndermek

Buradaki gibi her fonksiyonumuz aslında birer obje olduğu için diğer objeler gibi başka fonksiyonlara argüman olarak gönderilebilir. Bunları da öğrendiğimize göre artık decoratorlar için hazırız.

Decorator Fonksiyonların Oluşturulması ve Kullanılması

Bu konuda decorator konseptini anlamaya çalışacağız.

Decorator fonksiyonlar, Pythonda fonksiyonlarımıza dinamik olarak ekstra özellik eklediğimiz fonksiyonlardır ve decorator fonksiyonların kullanımı kod tekrarı yapmamızı engeller. Pythonda decorator fonksiyonlar Flask gibi frameworklerde oldukça fazla kullanılır.

Bu iki fonksiyonda fonksiyonların çalışma sürelerini ölçmek için time modülünü kullandık. Ancak dikkat ederseniz, hem bu fonksiyonlara ekstradan iş yaptırdık , hem de 2 fonksiyonda da aynı satırları yazdık. Yani, aslında kod tekrarına düştük. Ancak eğer bu fonksiyonlara ekstra özellik ekleyen decorator bir fonksiyonumuz olsaydı, burada ne kod tekrarına düşecektik ne de fonksiyonlara ekstradan satır ekleyecektik. İşte decoratorların tam olarak önemi budur. İsterseniz zaman_hesapla isimli decorator’ımızı ilk önce yazalım. Daha sonra decoratorları açıklamaya çalışalım.

Burada zaman_hesapla() isimli decorator bir fonksiyon yazdık. Örneğin kareleri_hesapla(range(100000)) fonksiyonu çağrılırken aslında senaryomuz şu şekilde çalışıyor;

İşte decorator fonksiyonlarımızın aslında işlevi tamamıyla bu şekilde. Burada gördüğümüz gibi decoratorlar sayesinde, hem kod tekrarından kurtulduk, hem de zaman hesaplama işlemimizi decorator fonksiyonumuzda gerçekleştirdik.

BİR CEVAP BIRAK

Please enter your comment!
Please enter your name here