安迪_963

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

闭包说的是在函数内部定义一个函数,但该函数包含一个对外部变量的引用,该变量引用范围仅限局部变量,不会延伸到全局变量

#!/usr/bin/env python
#coding:utf-8
#@Author:Andy
# Date: 2017/6/14

name = 'alex'

def func():
	name = 'egon'
	def bar():
		print(name) # 包含对外部变量的引用,如果还找不到,继续,但不会到全局找
	return bar


if __name__ == '__main__':
	b = func()
	print(b)

# 一定是引用当前局部环境之外的变量,但不会延伸到全局变量
# 这里的b 得到的是对bar函数的引用,但已经包含了变量name = 'egon',类似包裹住一样
# 如果你需要用的是bar函数,bar = func() ,这样就得到了闭包的bar函数
# 调用bar()函数即可。

posted on 2017-06-19 19:35  Andy_963  阅读(210)  评论(0编辑  收藏  举报