雅虎猫

博客园 首页 联系 订阅 管理

    Python函数的作用域规则非常重要,它是正确使用函数的重要原则。每次调用一个函数时,将会为该函数创建一个局部命名空间。该命名空间代表一个局部环境,其中包括函数参数的名称和在函数体内赋值的变量的名称。解析这些名称时,解释器首先搜索局部命名空间,如果没有找到匹配的名称,则会搜索全局命名空间。函数的全局命名空间始终是定义该函数的模块。如果解释器在全局命名空间中也找不到匹配的名称,最终会检查内置命名空间,如果仍然找不到,则会引发NameError异常。

    Python支持嵌套的函数定义。使用静态作用域可以绑定嵌套函数中的变量。也就是说,解析名称时首先检查局部作用域,然后由内而外一层层检查外部嵌套函数定义的作用域。如果找不到匹配的,最后将搜索全局命名空间和内置命名空间。将变量声明为nonlocal不会把变量绑定到任意函数中定义的局部变量,而是搜索当前调用栈中的下一层函数,即动态作用域。

posted on 2017-11-23 20:18  雅虎猫  阅读(260)  评论(0编辑  收藏  举报