温故而知新。
现在回顾下之前的闭包,感觉比之前要更好地理解了。
定义:
闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,
所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。
闭包:
函数对象+函数内部需要使用的一个外部变量=函数返回的整体
直接上代码
def timer(func):
def func1():
print("start...")
t1=time.time()
func()
print("end...")
t2=time.time()
return t2-t1
return func1
@timer
def a():
i=1
while i<1000000:
i+=10
print(a()) #将a函数对象作为参数传到timer中这个是由装饰器自动完成的,a()相当于func1()
带参数的:
def run(func):
def func1(*args,**kwargs):
print("start...")
a=func(*args,**kwargs)
print("end")
return a
return func1
@run
def count(*args,**kwargs):
result=0
for i in args:
result+=i
for j in kwargs.values():
result+=j
return result
print(count(1,2,3,a=3,b=3))