关于语法糖参数的实现
首先关于装饰器
1。装饰器的功能实现
import time
def timmer(func):
def wrapper():
start_time=time.time()
res = func()
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函数运行完毕')
test()
以上是最简单的装饰器,实现了函数参数返回值的装饰
增加一个装饰功能(计算运行时间)
2。如何在语法糖传参实现装饰器的附加功能
import time
def timer():
return time.time()
def space_outer(x,*y):
def outer(func):
def inner(*args, **kwargs):
start_time = x()
res = func(*args, **kwargs)
stop_time = x()
print('%s程序运行时间%s' % (y,(stop_time - start_time)))
return res
return inner
return outer
@space_outer(timer,'china','shanghai')
def test():
time.sleep(3)
print('test函数运行完毕')
可以发现,我在语法糖上增加一个参数,使得整个装饰功能得到增强,同样是测试运行时间,新的功能运行更加清晰明了,且可以举一反三