|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
- print(f())
复制代码
请问我对修饰符的理解的是:@timeslog表示将以下程序代入timeslog函数里。
但是我有几处不理解的地方:
一、为什么要def call()及return call。
二、timeslog是定义变量func, 且在程序中宣告引用func(),但@timeslog中是def f(),不一样的名字,为什么可以引入。
三、return "It's used : %s ." % (end - start),为什么是用return,我试着用print("It's used : %s ." % (end - start)),程式是可运行,只是不懂为什么会多了一行None。
四、return y起到什么功用,注记起来,程式也可以正常运行。
本帖最后由 yjsx86 于 2018-1-24 20:38 编辑
在你的代码里
@timeslong # 这里等同于 f = timeslong(f)
def f():
code
你还有很多基础的东西要先去了解 这里我先写一个 装饰器 的模板
- def runtime(func):
- @functools.wraps(func)
- def wrapper(*args,**kw):
- start = time.clock()
- rs = func(*args,**kw)
- stop = time.clock()
- print('Finnished in %.5f sec' % (stop-start))
- if rs:
- return rs
- return wrapper
复制代码
|
|