|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- import time
-
- def timeslong(func):
- def call():
- start = time.clock()
- print("It's time starting ! ")
- func()
- print("It's time ending ! ")
- end = time.clock()
- return "It's used : %s ." % (end - start)
- return call
- @timeslong
- def f():
- y = 0
- for i in range(10):
- y = y + i + 1
- print(y)
- return y
复制代码
以上代码运行后,再运行f(),会正常显示
It's time starting !
1
3
6
10
15
21
28
36
45
55
It's time ending !
"It's used : 0.059066208439620065 ."
而如果以上运行后是运行timeslong(f)(),则会显示
It's time starting !
It's time starting !
1
3
6
10
15
21
28
36
45
55
It's time ending !
It's time ending !
"It's used : 0.09472091493825019 ."
不了解这两次运行的区别。代码来源http://bbs.fishc.com/thread-51106-1-1.html
1.在装饰器作用下,f = timeslong(f) ,所以你第一次运行 f()相当于运行去掉@timeslong之后的 timeslong(f)()。
2.你第二次没有去掉@timeslong 然后运行timeslong(f)(),这个相当于在去掉@timeslong后运行timeslong(timeslong(f))().
3.基于1,2,所以你的两次运行结果才会不一样,你可以自己实验证明一下。睡觉了。有问题明天起来再看,不好意思。
|
|