def test1(x): return x+1 a =test1(1)
def test1(x): print(x+1) def test2(f): #其他的函数f作为入参 f(3) test2(test1)
def test1(x): print(x+1) def test2(): return test1 #返回test1()函数
def test2(): a =1 #内部嵌套函数 def test3(): print(a) #跨域调用 test3()
def outer(x): def inner(): #内部嵌套函数 print(x) #跨域调用,内部函数调用外部函数的入参 return inner #函数作为返回函数,一定注意::不能return inner() ×× #调用函数 inner_func =outer(100) #调用外部函数,传入外部入参x=100。将inner()函数赋值给aa 即aa就是函数inner() ==闭包 inner_func()
2.1)、闭包进阶--将其他函数作为入参传入外部函函数
def test(): print(100) def outer(x): def inner(): #内部嵌套函数 x() #跨域调用外部入参x() return inner #返回闭包 内部函数inner() #调用函数 inner_func =outer(test) inner_func()
def outer(func): print(‘给需要装饰的函数,装饰点其他功能‘) def inner(): #内部嵌套函数 func() #跨域调用外部入参x() return inner #返回闭包 内部函数inner() @outer def test(): print(100) if __name__ ==‘__main__‘: test()
-----执行结果-----
给需要装饰的函数,装饰点其他功能
100
def showtime(func): import time begtime =time.time() #被装饰函数执行前,记录开始时间 def inner(): #内部函数定义 func() #内部函数中执行被装饰函数 endtime =time.time() #被装饰函数执行结束,显示结束时间 print(endtime-begtime) #显示函数执行时间 return inner #装饰器返回内部函数 @showtime def test1(): import time time.sleep(2) -----执行结果---- 2.0101544857025146
ef showtime(func): import time begtime =time.time() #被装饰函数执行前,记录开始时间 def inner(*args,**kwargs): #内部函数定义 func(*args,**kwargs) #内部函数中执行被装饰函数 endtime =time.time() #被装饰函数执行结束,显示结束时间 print(endtime-begtime) #显示函数执行时间 return inner #装饰器返回内部函数 @showtime def test1(name): import time time.sleep(2) print(‘函数的名称是:‘,name)
备注: 本文有参考:上海-悠悠等他人博客
原文:https://www.cnblogs.com/jesse-zhao/p/14528046.html