Dekoratörler

Python'da Fonksiyon Yazımı

Shayne Miel

Software Architect @ Duo Security

Fonksiyonlar

fonksiyon

Python'da Fonksiyon Yazımı

Dekoratörler

dekoratörlü fonksiyon

Python'da Fonksiyon Yazımı

Girdileri değiştirin

girdileri değiştir

Python'da Fonksiyon Yazımı

Çıktıları değiştirin

çıktıları değiştir

Python'da Fonksiyon Yazımı

Fonksiyonu değiştirin

fonksiyonu değiştir

Python'da Fonksiyon Yazımı

Bir dekoratör nasıl görünür?

@double_args
def multiply(a, b):
  return a * b

multiply(1, 5)
20
Python'da Fonksiyon Yazımı

double_args dekoratörü

def multiply(a, b):
  return a * b

def double_args(func): return func
new_multiply = double_args(multiply)
new_multiply(1, 5)
5
multiply(1, 5)
5
Python'da Fonksiyon Yazımı

double_args dekoratörü

def multiply(a, b):
  return a * b

def double_args(func):
# Değiştirebileceğimiz yeni bir fonksiyon tanımlayın def wrapper(a, b):
# Şimdilik, değiştirilmemiş fonksiyonu çağırın return func(a, b)
# Yeni fonksiyonu döndürün return wrapper
new_multiply = double_args(multiply)
new_multiply(1, 5)
5
Python'da Fonksiyon Yazımı

double_args dekoratörü

def multiply(a, b):
  return a * b

def double_args(func): def wrapper(a, b):
# Fonksiyonu çağırın, ancak her argümanı ikiyle çarpın return func(a * 2, b * 2)
return wrapper
new_multiply = double_args(multiply)
new_multiply(1, 5)
20
Python'da Fonksiyon Yazımı

double_args dekoratörü

def multiply(a, b):
  return a * b

def double_args(func): def wrapper(a, b): return func(a * 2, b * 2) return wrapper
multiply = double_args(multiply)
multiply(1, 5)
20
multiply.__closure__[0].cell_contents
<function multiply at 0x7f0060c9e620>
Python'da Fonksiyon Yazımı

Dekoratör sözdizimi

def double_args(func):
  def wrapper(a, b):
    return func(a * 2, b * 2)
  return wrapper

def multiply(a, b): return a * b multiply = double_args(multiply) multiply(1, 5)
20
def double_args(func):
  def wrapper(a, b):
    return func(a * 2, b * 2)
  return wrapper

@double_args def multiply(a, b): return a * b multiply(1, 5)
20
Python'da Fonksiyon Yazımı

Hadi pratik yapalım!

Python'da Fonksiyon Yazımı

Preparing Video For Download...