decorators:
inputs
Decorators are functions that make other functions better. It's a bit meta, but they're very powerful. In this series of video's we'll explore them by building our own but also by showing how you typically use them.
Notes
We can also have decorators that accept inputs. This makes for even more expressiveness.
import time
import random
from functools import wraps
def loggg(show_name=True, show_time=True):
def stopwatch(f):
@wraps(f)
def func(*args, **kwargs):
tic = time.time()
result = f(*args, **kwargs)
result = "call"
if show_name:
result = f"{result} {f.__name__}"
if show_time:
result = f"{result} time:{time.time() - tic}"
return result
return func
return stopwatch
@loggg(show_name=False, show_time=True)
def sleep_random(s):
"""This function sleeps at least for `s` seconds."""
return time.sleep(s + random.random()/100)
sleep_random(1)
Feedback? See an issue? Something unclear? Feel free to mention it here.
If you want to be kept up to date, consider signing up for the newsletter.