闭包的功能举例

闭包可以在函数外部或者其他函数内,访问本函数内的变量:

闭包可以使变量持久,常驻内存,又可以避免变量被外部修改

 1 def func():
 2     name = "大傻子"            #定义个name = "大傻子"
 3     def func1():
 4         return name             #把name返回给func1
 5     return func1                #把func地址返回给func
 6 
 7 def func2():
 8     name = func()()             #把func1的返回值name = "大傻子" 赋值给新name
 9     def func3():
10         print(name)             #打印新name = "大傻子"
11         print("哈哈")
12         return "嘻嘻"          #返回字符串"哈哈"给func3
13     return func3                #返回func3的地址给func2
14 print(func2())                  #调用func2,返回func3地址
15 print(func2()())                #调用func3,返回"嘻嘻"

结果对照:

1 大傻子
2 哈哈
3 嘻嘻

如何查看函数是否是闭包:(未粘贴上面代码)

1 print(func() .__closure__)      #查看函数是否是闭包,,返回非None就是闭包
2 print(func2() .__closure__)      #查看函数是否是闭包,,返回非None就是闭包

结果对照:

1 (<cell at 0x0000022D0785C888: str object at 0x0000022D0783BF90>,)
2 (<cell at 0x0000022D0785C888: str object at 0x0000022D0783BF90>,)

 

转载于:https://www.cnblogs.com/NoteBook3013/p/10249559.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值