In [24]:
import functools
def logger(func):
@functools.wraps(func)
def wrapped(num_list):
result = func(num_list)
with open('decorator.log', 'w') as f:
f.write("{}\n".format(str(result)))
return result
# end of wrapped()
return wrapped
@logger
def summator(num_list):
return sum(num_list)
print("summator(): {}".format(summator([1,2,3,4,5])))
In [25]:
with open("decorator.log", "r") as f:
print("decorator.log: {}".format(f.read()))
In [26]:
print(summator.__name__)
In [34]:
def logger(filename):
def decorator(func):
def wrapped(*ars, **kwards):
result = func(*ars, **kwards)
with open(filename, 'w') as f:
f.write(str(result))
return result
return wrapped
return decorator
@logger('decorator_new.log')
def summator(num_list):
return sum(num_list)
print("summator: {}".format( summator(list(range(1,7))) ))
with open('decorator_new.log', 'r') as f:
print("from log: {}".format(f.read()))
In [39]:
import functools
def bold(func):
@functools.wraps(func)
def wrapped(*args, **kwargs):
return "<b>{}</b>".format(func(*args, **kwargs))
return wrapped
def italic(func):
@functools.wraps(func)
def wrapped(*args, **kwargs):
return "<i>{}</i>".format(func(*args, **kwargs))
return wrapped
In [38]:
@bold
@italic
def hello():
return "hello!"
print(hello())
print(hello.__name__)
In [ ]: