Gerçek dünya örnekleri

Python'da Fonksiyon Yazımı

Shayne Miel

Software Architect @ Duo Security

Bir fonksiyonu zamanlamak

import time

def timer(func):
  """Bir fonksiyonun çalışma süresini yazdıran dekoratör.

  Args:
    func (callable): Dekore edilen fonksiyon.

  Returns:
    callable: Dekore edilmiş fonksiyon.
  """
Python'da Fonksiyon Yazımı
import time

def timer(func):
  """Bir fonksiyonun çalışma süresini yazdıran dekoratör."""

# Döndürülecek sarmalayıcı fonksiyonu tanımlayın. def wrapper(*args, **kwargs):
# wrapper() çağrıldığında, o anki zamanı alın. t_start = time.time()
# Dekore edilen fonksiyonu çağırın ve sonucu saklayın. result = func(*args, **kwargs)
# Toplam süreyi hesaplayın ve yazdırın. t_total = time.time() - t_start print('{} took {}s'.format(func.__name__, t_total))
return result
return wrapper
Python'da Fonksiyon Yazımı

timer() kullanımı

@timer
def sleep_n_seconds(n):
  time.sleep(n)
sleep_n_seconds(5)
sleep_n_seconds took 5.0050950050354s
sleep_n_seconds(10)
sleep_n_seconds took 10.010067701339722s
Python'da Fonksiyon Yazımı
def memoize(func):
  """Dekore edilen fonksiyonun sonuçlarını hızlı erişim için saklar
  """

# Sonuçları argümanları sonuçlara eşleyen bir sözlükte saklayın cache = {}
# Döndürülecek sarmalayıcı fonksiyonu tanımlayın. def wrapper(*args, **kwargs): # 'kwargs' için hashlenebilir bir anahtar tanımlayın. kwargs_key = tuple(sorted(kwargs.items()))
# Bu argümanlar daha önce görülmediyse if (args, kwargs_key) not in cache:
# func() çağrısını yapın ve sonucu saklayın. cache[(args, kwargs_key)] = func(*args, **kwargs)
return cache[(args, kwargs_key)]
return wrapper
Python'da Fonksiyon Yazımı
@memoize
def slow_function(a, b):
  print('Sleeping...')
  time.sleep(5)
  return a + b
slow_function(3, 4)
Sleeping...

7
slow_function(3, 4)
7
Python'da Fonksiyon Yazımı

Dekoratörler ne zaman kullanılır

  • Birden çok fonksiyona ortak davranış ekleyin
@timer
def foo():
  # do some computation

@timer
def bar():
  # do some other computation

@timer
def baz():
  # do something else
Python'da Fonksiyon Yazımı

Haydi pratik yapalım!

Python'da Fonksiyon Yazımı

Preparing Video For Download...