框架
#装饰器的框架 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
原文地址:https://www.cnblogs.com/liupingtao/p/9599340.html
时间: 2024-10-07 23:41:13