【发布时间】:2018-09-12 05:59:22
【问题描述】:
这是我的代码:
name = "Arthur"
message = "Hello!"
def decorate(func_to_decorate):
def wrap(*args, **kwargs):
print ("........................")
func_to_decorate(*args, **kwargs)
print ("........................")
return wrap
@decorate
def send_message(your_name="unassigned", your_message="blank"):
print(your_name)
print(your_message)
send_message(name, message)
我的错误在第 20 行:
send_message(name, message)
TypeError: 'NoneType' object is not callable
我的理解是,包装器正在用紧跟在装饰器后面的函数“替换”自己。当我没有将参数传递给被装饰的函数时,这似乎可行,但在装饰器存在的情况下则不行。
【问题讨论】:
-
你认为
decorate的回报是什么? -
我认为它返回了新函数。
标签: python parameters arguments decorator nonetype