This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def turing(function): | |
if not has_infinite_loop(function, function): | |
while True: | |
pass |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(): |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
dek = _dek(_dek, defer=True) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import dek | |
@dek | |
def print_before(pfunc, label='label'): | |
print(label, pfunc) | |
return pfunc() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@print_before3() | |
def mj1(a, b, c): | |
pass | |
@print_before3('OK') | |
def mj2(one, two, three): | |
pass | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@print_before3() | |
def important(lives, money, valuables=None): | |
pass | |
@print_before3('BORING:') | |
def dull(*args, **kwds): | |
pass | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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) | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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) | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 | |