闭包说的是在函数内部定义一个函数,但该函数包含一个对外部变量的引用,该变量引用范围仅限局部变量,不会延伸到全局变量
#!/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()函数即可。