Python函数闭包

时间:2019-09-25
本文章向大家介绍Python函数闭包,主要包括Python函数闭包使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

定义:如果在一个内部函数里,对外部作用域(单不是在全局作用域)的变量进行引用。

 1 def outer():
 2     x=10
 3     def inner():#条件一:内部函数
 4         print(x)#条件二:对外部环境变量的一个引用
 5     return inner  #结论:内部函数就是一个闭包
 6  
 7 #outer()()
 8 #f=outer()
 9 #f()
10 #inner()#局部变量,全局无法调用
11  
12 f=outer()
13 f()
14  

关于闭包:闭包=内部函数块 + 定义函数时的环境

下面的例子没有定义函数的环境,所以不是闭包

1 def outer1():
2     x=10
3     def inner():
4         c=100
5         print(c)
6     return inner 
7 f=outer1()
8 f()

闭包作用:在不修改原有的功能基础上增加功能

 1 import time
 2 def foo():
 3     print('foo...')
 4 def bar():
 5     print('bar...........')
 6  
 7  
 8  
 9 def show_time(f):
10     def inner():
11         start = time.time()
12         f()
13         end = time.time()
14         print('spend %s'%(end-start))
15     return inner
16  
17  
18 foo=show_time(foo)
19 foo()
20 bar=show_time(bar)
21 bar()

原函数只实现了打印,但是我后面需要增加打印耗费时间,因此放在inner函数下面

原文地址:https://www.cnblogs.com/softtester/p/11583276.html