python基础知识整理4——函数闭包

函数闭包

  • Function Clouse:引用了自由变量的函数既是一个闭包.这个被引用的自由变量和这个函数一同存在,即便它已经离开了创造它的环境也一样.
  • 比如下面的函数的返回值
def foo():
	I = []
	def bar(i):
		I.append(i)
		return bar
f1 = foo()
f2 = foo()

#实验下列语句执行结果
f1(1)
f1(2)
f2(3)
  • 深入一点:object.__closure__
  • 作用域
┌───────────────────────────┐
│ built-in namespace        │
├───────────────────────────┤  ↑
│ global namespace          │
│   ┌───────────────────────┤
│   │ local namespace       │  n = 123
│   │   ┌───────────────────┤
│   │   │ local namespace   │  ↑
│   │   │   ┌───────────────┤
│   │   │   │ ...           │  print(n)
└───┴───┴───┴───────────────┘

声明全局变量: global
声明非本层的 局部变量 : nonlocal
查看全局变量: globals()
查看局部变量: locals()
查看变量: vars([object]) # 不传参数相当于 locals(), 传入对象后, 会得到 object.__dict__

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值