【发布时间】:2018-08-13 12:45:13
【问题描述】:
今天在学习装饰器的时候遇到一个问题,看下面两段代码 代码1:
def log(func):
def wrapper(*args,**kw):
print('call %s():' % func.__name__)
return func(*args,**kw)
return wrapper
@log
def now():
print('2018-8-28')
now()
代码2:
def log(func):
print('call %s():' % func.__name__)
return func
@log
def now():
print('2018-8-28')
now()
print(type(now()))
为什么第一个代码定义了多个包装函数?两个代码的输出是一样的。
在代码2中,我对now函数使用type方法查看它的类型,结果类型为None。
【问题讨论】:
-
在您的问题中将代码摘录作为文本发布比屏幕截图链接更有用。
-
第一个定义了一个装饰器和一个包装器。第二个根本没有定义包装器。输出只是相同的,因为您中间什么都不做。运行两次,您应该会看到不同。
-
感谢上面的回答,我会仔细看看你的回答,应该不会有很多问题
标签: python python-3.x decorator