1. Nauka
  2. /
  3. Kursy
  4. /
  5. Pisanie funkcji w Pythonie

Connected

ćwiczenie

Mierzenie narzutu dekoratora

Twój szef napisał dekorator o nazwie check_everything(), który uważa za coś wyjątkowego – i nalega, żebyś go używał w swojej funkcji. Zauważyłeś jednak, że dekorowanie funkcji tym dekoratorem sprawia, iż działają one znacznie wolniej. Musisz przekonać szefa, że dekorator dodaje zbyt dużo czasu przetwarzania. W tym celu zmierzysz, jak długo trwa wykonanie wersji udekorowanej, i porównasz to z czasem wykonania wersji bez dekoratora. Oto dekorator, o którym mowa:

def check_everything(func):
  @wraps(func)
  def wrapper(*args, **kwargs):
    check_inputs(*args, **kwargs)
    result = func(*args, **kwargs)
    check_outputs(result)
    return result
  return wrapper

Instrukcje

100 XP
  • Zamiast wywoływać wersję udekorowaną, wywołaj oryginalną funkcję – skorzystaj z atrybutu, który instrukcja wraps() w dekoratorze szefa dodała do udekorowanej funkcji.