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(name):
print(name,"hello")
return "哈哈"
@print_func_name # say_goodbye = print_func_name(say_goodbye)
def say_goodbye(name,age):
print(age,name,"goodbye")
#-------以上是定义者,以下是调用者-----------------------------------------------
say_hello("张无忌")
print(say_hello("张无忌"))
say_goodbye("赵敏",25)
>>>
say_hello
张无忌 hello
say_hello
张无忌 hello
哈哈
say_goodbye
25 赵敏 goodbye