在不改变原函数的调用以及内部代码情况下,为其添加新功能的函数。
'''
实现一个装饰器
'''
def print_func_name(func): # 提供旧功能
def wrapper(*args, **kwargs): # 包装
print(func.__name__) # 新功能
return func(*args, **kwargs) # 旧功能
return wrapper
@print_func_name # say_hello = print_func_name(say_hello)
def say_hello():
print("hello")
return "ok"
@print_func_name
def say_goodbye(name):
print(name, "goodbye")
result = say_hello()
print(result)
say_goodbye("张无忌")