def test(): for i in range(4): yield i t = test() t1=(i for i in t) t2=(i for i in t1)#生成器在产生时不做任何操作,只有执行时才会遍历,所以t2此刻没有值 print(list(t1)) print(list(t2))
import time # 装饰器的架子 def timmer(func): # func=test def wrapper(): # print(func) start_time = time.time() func() # 就是在运行test() stop_time = time.time() print('运行时间是%s' % (stop_time - start_time)) return wrapper def test(): time.sleep(3) print('test函数运行完毕') test = timmer(test)#返回的是wrapper的地址 test()#执行的是wrapper()装饰器1.0
import time# 装饰器的架子 def timmer(func): # func=test def wrapper(): start_time = time.time() res = func() # 就是在运行test() stop_time = time.time() print('运行时间是%s' % (stop_time - start_time)) return res return wrapper @timmer #相当于test = timmer(test) def test(): time.sleep(3) print('test函数运行完毕') return'这是test的返回值' res = test() print(res)@timmer装饰器加上返回值
import time# 装饰器的架子 def timmer(func): # func=test def wrapper(*args,**kwargs):#*args接受所有参数,**kwargs接受关键字参数,位置参数必须在关键字参数左边 start_time = time.time() res = func(*args,**kwargs) # 就是在运行test() stop_time = time.time() print('运行时间是%s' % (stop_time - start_time)) return res return wrapper
#技巧 >>> m [10, 3, 2, 3, 5, 1, 2] >>> a,*_,c=m #_没有意义,写*d也行>>> a 10 >>> c 2