在函数内部访问外部的变量

变量是有作用域的.

函数不仅可以定义在模块的最外层,还可以定义在另外一个函数的内部,像这种定义在函数里面的函数称之为嵌套函数例如:

def print_msg():
    # print_msg 是外围函数
    msg = "zen of python"

    def printer():
        # printer是嵌套函数
        print(msg)
    printer()
# 输出 zen of python
print_msg()
对于嵌套函数,它可以访问到其外层作用域中声明的非局部变量,比如代码示例中的变量 msg 可以被嵌套函数 printer 正常访问。

那么有没有一种可能即使脱离了函数本身的作用范围,局部变量还可以被访问得到呢?答案是闭包

 

posted on 2017-05-15 15:07  FantasyBoy  阅读(785)  评论(0编辑  收藏  举报