D20-05 函数闭包 装饰器 06 ..解压序列
Posted liupingtao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了D20-05 函数闭包 装饰器 06 ..解压序列相关的知识,希望对你有一定的参考价值。
框架
#装饰器的框架 import time def timmer(func): #func=test def wrapper(): start_time=time.time() func() #就是在运行test stop_time=time.time() print(‘运行时间是%s‘%(start_time-stop_time)) return wrapper def test(): time.sleep(3) print(‘test函数运行完毕‘) test = timmer(test) #返回的是wrapper的地址 另res=timmer(test) test() #执行的是wrapper()
但是以上方法需要给test做赋值工作,需要将所有的函数都一一赋值,所以有个小技巧。
#语法糖 @timmer 就相当于 test = timmer(test)
#装饰器的框架
import time
def timmer(func): #func=test
def wrapper():
start_time=time.time()
func() #就是在运行test
stop_time=time.time()
print(‘运行时间是%s‘%(start_time-stop_time))
return wrapper
@timmer #就相当于执行的执行的test=timmer(test)
def test():
time.sleep(3)
print(‘test函数运行完毕‘)
test() #执行的是wrapper()
返回值 将res赋值func()
#装饰器的框架 import time def timmer(func): #func=test def wrapper(): start_time=time.time() res = func() #就是在运行test,有运行的结果 stop_time=time.time() print(‘运行时间是%s‘%(start_time-stop_time)) return res return wrapper @timmer def test(): time.sleep(1) print(‘test函数运行完毕‘) return ‘这是test的返回值‘ test() #执行的是wrapper()
非固定参数
import time def timmer(func): #func=test def wrapper(*args,**kwargs): start_time=time.time() res = func(*args,**kwargs) #就是在运行test,有运行的结果 stop_time=time.time() print(‘运行时间是%s‘%(start_time-stop_time)) return res return wrapper @timmer def test(name,age): time.sleep(1) print(‘test函数运行完毕,名字是%s,年龄是%s‘%(name,age)) return ‘这是test的返回值‘ test(‘liu‘,18) #执行的是wrapper()
解压序列
假设有一个很长的序列 ,只想取第一个和最后一个值
1 >>> l=[10,3,2,3,5,1,2,3,5,8,9] 2 >>> a,*_,c=l #取第一个值和最后一个值 3 >>> a 4 10 5 >>> c 6 9
值互换
1 #交换f1和f2的值 2 3 >>> f1=1 4 >>> f2=2 5 6 7 >>> f1,f2=f2,f1 8 >>> f1 9 2 10 >>> f2 11 1
以上是关于D20-05 函数闭包 装饰器 06 ..解压序列的主要内容,如果未能解决你的问题,请参考以下文章