Bağımsız değişken alan dekoratörler

Python'da Fonksiyon Yazımı

Shayne Miel

Software Architect @ Duo Security

def run_three_times(func):
  def wrapper(*args, **kwargs):
    for i in range(3):
      func(*args, **kwargs)
  return wrapper

@run_three_times def print_sum(a, b): print(a + b)
print_sum(3, 5)
8
8
8
Python'da Fonksiyon Yazımı

run_n_times()

def run_n_times(func):
  def wrapper(*args, **kwargs):
    # "n" değerini bu fonksiyona nasıl aktarırız?
    for i in range(???):
      func(*args, **kwargs)
  return wrapper

@run_n_times(3) def print_sum(a, b): print(a + b)
@run_n_times(5) def print_hello(): print('Hello!')
Python'da Fonksiyon Yazımı

Bir dekoratör fabrikası

def run_n_times(n):
  """Bir dekoratör tanımlayıp döndür"""

def decorator(func):
def wrapper(*args, **kwargs):
for i in range(n): func(*args, **kwargs)
return wrapper
return decorator
@run_n_times(3) def print_sum(a, b): print(a + b)
Python'da Fonksiyon Yazımı
def run_n_times(n):
  """Bir dekoratör tanımlayıp döndür"""
  def decorator(func):
    def wrapper(*args, **kwargs):
      for i in range(n):
        func(*args, **kwargs)
    return wrapper
  return decorator

run_three_times = run_n_times(3)
@run_three_times def print_sum(a, b): print(a + b)
@run_n_times(3) def print_sum(a, b): print(a + b)
Python'da Fonksiyon Yazımı

run_n_times() kullanımı

@run_n_times(3)
def print_sum(a, b):
  print(a + b)

print_sum(3, 5)
8
8
8
@run_n_times(5)
def print_hello():
  print('Hello!')

print_hello()
Hello!
Hello!
Hello!
Hello!
Hello!
Python'da Fonksiyon Yazımı

Hadi pratik yapalım!

Python'da Fonksiyon Yazımı

Preparing Video For Download...