码迷,mamicode.com
首页 > 编程语言 > 详细

python----特殊闭包

时间:2018-08-23 22:07:06      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:闭包函数   code   释放   保存   全局   turn   print   状态   python   

1、闭包的定义:

  当子函数有调用父级函数变量(非全局变量)并返回子函数名时父级函数不会随着函数运行而结束释放,而是会保存状态等待子函数的调用。

我们常见的闭包类型:

def fun1():
    x = 1
    def fun2():
        return x
    return fun2
g = fun1()
print(g())

  这样的闭包大家肯定能一眼看出。

 

那么这样的呢:

#1
def
fun1(): lis = [] name = alex def fun2(): print(name) lis.append(fun2) return lis g = fun1() g[0]() #2 lis = [] def fun1(): name = alex def fun2(): print(name) lis.append(fun2) g = fun1() lis[0]()

  运行上面程序你会发现其实都是闭包,第一种fun2调用了父级函数的name变量,然后函数名通过放在列表中返回了。而第二中,函数名时通过一个可变的全局变量列表中返回,所以也是一个闭包函数.

 

python----特殊闭包

标签:闭包函数   code   释放   保存   全局   turn   print   状态   python   

原文地址:https://www.cnblogs.com/Kingfan1993/p/9526263.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!