Python Dekoratör: Dekoratör Nedir, Ne İşe Yarar

python decorators

Python’da dekoratörler, fonksiyonlarınızı veya sınıflarınızı daha esnek ve yeniden kullanılabilir hale getirmenizi sağlayan güçlü bir araçtır. Bu blog yazısında, Python dekoratörlerini anlamak ve nasıl kullanılacağınızı öğrenmek için temel kavramları ele alacağız.

Dekoratör Nedir?

Bir Python dekoratörü , bir sınıfa işlevsellik eklemek veya değiştirmek için kullanılan bir yöntemdir. Temel olarak, bir fonksiyonu saran başka bir fonksiyondur. İlave özellik, işlevsellik katar.

Dekoratör Oluşturma

Dekoratörler fonksiyonlarla birlikte kullanıldığında, fonksiyonları veya sınıfları daha güçlü ve esnek hale getirir. İşte bir dekoratörün nasıl tanımlanacağına dair basit bir örnek:

def my_decorator(func):
    def wrapper():
        print("Fonksiyon başladı.")
        func()
        print("Fonksiyon bitti.")
    return wrapper

@my_decorator
def say_hello():
    print("Merhaba!")

say_hello()

Bu örnekte, my_decorator adlı bir dekoratör tanımladık ve say_hello fonksiyonunu bu dekoratörle süsledik. “say_hello” fonksiyonunu çağırdığımızda, dekoratör fonksiyon etrafında ek özellikler eklenir ve çıktı şu şekilde olur:

Fonksiyon başladı.
Merhaba!
Fonksiyon bitti.

Dekoratörlerin Avantajları

Python dekoratörlerinin kullanılmasının bazı avantajları şunlardır:

  1. Kodun Daha Okunur ve Temiz Olması: Dekoratörler, fonksiyonlarını veya sınıflarınızı düzenli ve okunabilir bir şekilde geliştirmenize yardımcı olur.
  2. Tekrar Kullanılabilirlik: Aynı dekoratörü farklı fonksiyon veya sınıflara uygulayabilir ve kodunuzu tekrar kullanabilirsiniz.
  3. Ayrı Sorumluluk: Dekoratörler, her bir fonksiyon veya sınıfın sadece kendi temel işlevini yerine getirmesini sağlar. Organizasyona yardımcı olur.
  4. Modülerlik: Dekoratörler, kodunuzu modüler hale getirir ve bileşenler arasındaki bağımlılığı azaltır.

İç İçe Dekoratörler

Python’da iç içe dekoratörler kullanabilirsiniz. Bu, bir fonksiyonu birden fazla dekoratörle süsleyebileceğiniz anlamına gelir. İşte bir örnek:

def decorator1(func):
    def wrapper():
        print("Dekoratör 1 çalışıyor.")
        func()
    return wrapper

def decorator2(func):
    def wrapper():
        print("Dekoratör 2 çalışıyor.")
        func()
    return wrapper

@decorator1
@decorator2
def say_hello():
    print("Merhaba!")

say_hello()

Bu kodda, “say_hello” fonksiyonu önce decorator2 ile, ardından decorator1 ile süslenir. İşlev çağrıldığında, dekoratörlerin sırasına göre çalışır ve çıktı şu şekilde olur:

Dekoratör 1 çalışıyor.
Dekoratör 2 çalışıyor.
Merhaba!

Dahili Dekoratörler

Python, bazı dahili dekoratörler içerir. Örneğin, @staticmethod, @classmethod ve @property gibi dekoratörler sıkça kullanılır. Bu dekoratörler, sınıfları ve sınıf üyelerini düzenlemek ve işlevselliği kontrol etmek için kullanılır.

Sonuç

Python dekoratörleri, kodunuzu daha temiz, okunabilir ve yeniden kullanılabilir hale getiren güçlü bir araçtır. Fonksiyonları veya sınıfları sarmalayarak ek işlevsellik eklemenize veya değiştirmenize olanak tanır. İç içe dekoratörlerle daha karmaşık işlevsellikler oluşturabilir ve dahili dekoratörlerle sınıfları düzenleyebilirsiniz. Dekoratörleri kullanarak Python kodunuzu daha iyi organize edebilir ve bakımını daha kolay hale getirebilirsiniz.

Benzer İçerikler