Skip to content

Instantly share code, notes, and snippets.

View rec's full-sized avatar
🥝
coding

Tom Ritchford rec

🥝
coding
View GitHub Profile
def turing(function):
if not has_infinite_loop(function, function):
while True:
pass
def loops_forever(function, *arguments):
# Return True if function(*arguments) loops forever
# Let's try it out
def loops_forever():
while True:
print()
def loops_once():
dek = _dek(_dek, defer=True)
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