Fonksiyonlarını etiketle
Bir şeyi etiketlemek, ona etiket görevi gören bir veya daha fazla metin (string) vermek demektir. Örneğin, daha sonra aramak için e-postaları veya fotoğrafları sıkça etiketleriz. Sen de fonksiyonlarını keyfî bir etiket listesiyle etiketlemene izin verecek bir dekoratör yazmaya karar verdin. Bu etiketleri pek çok amaçla kullanabilirsin:
- Fonksiyon üzerinde kimin çalıştığına dair bilgi ekleyerek, kullanıcıların sorun yaşadıklarında kime danışabileceklerini görmelerini sağlamak.
- Fonksiyonları "experimental" olarak etiketleyerek, girdilerin ve çıktılarının gelecekte değişebileceğini kullanıcılara belirtmek.
- Kodun gelecekteki bir sürümünde kaldırmayı planladığın fonksiyonları işaretlemek.
- Vs.
Bu egzersiz
Python'da Fonksiyon Yazımı
kursunun bir parçasıdırEgzersiz talimatları
- Döndürülecek
decorator()adlı yeni bir dekoratör tanımla. - Dekore edilen fonksiyonun üstverisini koruduğundan emin ol.
- Dekore edilen fonksiyonu çağır ve sonucunu döndür.
- Yeni dekoratörü döndür.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
def tag(*tags):
# Define a new decorator, named "decorator", to return
def ____(____):
# Ensure the decorated function keeps its metadata
@____(____)
def wrapper(*args, **kwargs):
# Call the function being decorated and return the result
return ____(____, ____)
wrapper.tags = tags
return wrapper
# Return the new decorator
return ____
@tag('test', 'this is a tag')
def foo():
pass
print(foo.tags)