函数装饰器问题
本帖最后由 mannono5 于 2020-12-6 05:14 编辑class timeslong(object):
def __init__(self,func):
self.f = func
def __call__(self):
import time
start = time.time()
print("It's time starting ! ")
self.f()
print("It's time ending ! ")
end = time.time()
return "It's used : %s ." % (end - start)
@timeslong
def f():
y = 0
for i in range(10):
y = y + i + 1
print(y)
return y
print(f()) #这是原编码有打印call 的 return
f() # 我自己去掉print(), 结果没有打印call 的 return
为什么print(f()) 有打印call 的 return, 而f() 不打印call 的 return?? >>> print(f())
It's time starting !
1
3
6
10
15
21
28
36
45
55
It's time ending !
It's used : 0.08200478553771973 .
>>> f()
It's time starting !
1
3
6
10
15
21
28
36
45
55
It's time ending !
"It's used : 0.07900452613830566 ." 因为你返回的就是个字符串,字符串不打印出不来。 逃兵 发表于 2020-12-6 08:26
???怎么回事,之前我那边出不来,现在可以了?
mannono5 发表于 2020-12-6 10:25
???怎么回事,之前我那边出不来,现在可以了?
{:10_277:}
文本模式下不行,交互模式下可以
字符串是函数的返回值,函数中并没有print这个字符串的指令
所以不会打印的
页:
[1]