python:nonlocal和global函数探究

转自python:nonlocal和global函数探究python

1.Python变量做用域与命名空间

Python中能改变变量做用域的是关键字有def,class和lamda,其内部变量为封闭做用域;if/elif/else,while/for,try/except/else/finally等不改变变量的做用域,其内变量与外部变量做用域一致。git

变量的做用域指的是Python程序能够直接访问的命名空间,Python程序运行时会按顺序访问到4个命名空间,也就是4个层次的做用域,顺序以下:github

  • 代码中最里面区域的命名空间,首先被搜索,包括了代码块最里面的局部变量;
  • 任何封闭做用域的函数,都是从最近的封闭做用域开始搜索的,这个既不是局部变量,也不是全家变量;
  • 接着搜索的区域是当前模块所在的全局变量的命名空间;
  • 最后搜索的区域是包含了内置名称的命名空间。
相关文章
相关标签/搜索