Python Decorators nedir?

Decoratorlar ile birlikte fonksiyonumuzu oluşturmadan önce fonksiyonumuzun girdileri ve çıktıları kontrol etmemizi ve değiştirmemizi sağlayan bir yapıdır.Yeniden kullanılabilir olduğu için duplicate veya benzer kodun önüne geçer.Python’da fonksiyonların first class member olmasından faydalanılarak oluşturulmuştur. Örnek olarak:

def decoratemi(func): 
def wrapper():
print("Operation First")
func()
print("Operation Last")
return wrapper

Kullanırken ise:

@decoratemi 
def newfunc():
print("Operation")
newfunc()
#Output:
#Operation First
#Operation
#Operation Last

Aslında Decorator’ün yaptığı tam olarak şudur:

newfunc=decoratemi(newfunc)

Gördüğümüz gibi fonksiyonumuzun sarıp sarmalıyoruz. Çalışması kontrol altına alıyoruz.

Argümanlı bir şekilde kullanım da tabiki mümkündür. Örnek olarak:

def Spending_control(func): 
def wrapper(*args):
result=func(*args)
if result<0: #Eliminate Negative Spending
return 0
else:
return result
return wrapper
@Spending_control
def spend_to_furniture(color,maxprice):
furniture=apicall(color,maxprice)
return furniture.price
result=spend_to_furniture("green",500)

Gördüğünüz gibi negative spending ihtimalini yok ediyoruz ve güvenli bir ortam sağlıyoruz.

Son olarak keyword argümanları da kullanabilmek için:

def Spending_control(func):
def wrapper(*args,**kwargs):
result=func(*args,**kwargs)
if result<0: #Eliminate Negative Spending
return 0
else:
return result
return wrapper

Originally published at http://anilkaynr.wordpress.com on April 23, 2020.

Computer Engineer,Sociologist, CSE Master Student

Computer Engineer,Sociologist, CSE Master Student