Skip to content

Instantly share code, notes, and snippets.

View rec's full-sized avatar
🥝
coding

Tom Ritchford rec

🥝
coding
View GitHub Profile
import dek
@dek
def print_before(pfunc, label='label'):
print(label, pfunc)
return pfunc()
# Correct decorator for an optional parameter
def print_before4(label='label'):
def decorator(func):
@functools.wraps(func)
def wrapped(*args, **kwargs):
print(label, args, kwargs)
return func(*args, **kwargs)
@print_before3()
def mj1(a, b, c):
pass
@print_before3('OK')
def mj2(one, two, three):
pass
@rec
rec / dek4_1.py
Created July 12, 2020 09:48
dek4_1.py
@print_before3()
def important(lives, money, valuables=None):
pass
@print_before3('BORING:')
def dull(*args, **kwds):
pass
# Almost right
def print_before3(label='DEBUG:'):
def decorator(func):
@functools.wraps(func)
def wrapped(*args, **kwds):
print(label, func.__name__, args, kwds)
return func(*args, **kwds)
# Version 3
def print_before2(label):
def decorator(func):
@functools.wraps(func)
def wrapped(*args, **kwds):
print(label, func.__name__, args, kwds)
return func(*args, **kwds)
# WRONG
def print_before(func, label):
@functools.wraps(func)
def wrapped(*args, **kwds):
print(label, func.__name__, args, kwds)
return func(*args, **kwds)
return wrapped
@rec
rec / dek2.py
Last active July 12, 2020 09:42
dek 2
import functools
def print_before(func):
@functools.wraps(func)
def wrapped(*args, **kwds):
print(func.__name__, args, kwds)
return func(*args, **kwds)
@rec
rec / dek1_1.py
Last active July 12, 2020 14:16
dek 1.1
@print_before
def important(lives, money, valuables=None):
"""Do big, important things!!"""
pass
>>> important(23, 105.17, valuables=['dogs'])
important (23, 105.17) {'valuables': ['dogs']}
@rec
rec / dek1.py
Last active July 12, 2020 14:15
dek 1
def print_before(func):
def wrapped(*args, **kwds):
print('Before:', func.__name__, args, kwds)
return func(*args, **kwds)
return wrapped