In [30]:
def add(a, b):
"""add() adds things"""
return a + b
In [31]:
add(3,4)
Out[31]:
In [32]:
def logged_add(a, b):
print '### %s(%r, %r)' % ('add', a, b)
result = add(a, b)
print '### %s(%r, %r) --> %r' % ('add', a, b, result)
return result
In [33]:
logged_add(3,4)
Out[33]:
In [34]:
def logged(func):
def wrapper(a, b):
print '### %s(%r, %r)' % (func.func_name, a, b)
result = func(a, b)
print '### %s(%r, %r) --> %r' % (func.func_name, a, b, result)
return result
return wrapper
In [35]:
add = logged(add)
In [36]:
add(3,4)
Out[36]:
In [37]:
def logged(func):
def wrapper(*args):
print '### %s(%s)' % (func.func_name, args)
result = func(*args)
print '### %s(%s) --> %r' % (func.func_name, args, result)
return result
return wrapper
In [38]:
def add(a, b):
"""add() adds things"""
return a + b
add = logged(add)
In [39]:
add(3,4)
Out[39]:
In [40]:
def subtract(a, b):
"""subtract() subtracts two things"""
return a - b
subtract = logged(subtract)
def even(a):
"""even() returns True if the value is even"""
return a % 2 == 0
even = logged(even)
In [41]:
add(1, 1)
Out[41]:
In [42]:
add(2, 2)
Out[42]:
In [43]:
subtract(2, 1)
Out[43]:
In [44]:
even(42)
Out[44]:
In [45]:
even(43)
Out[45]:
In [ ]: