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

  • 代碼中最裏面區域的命名空間,首先被搜索,包括了代碼塊最裏面的局部變量;
  • 任何封閉做用域的函數,都是從最近的封閉做用域開始搜索的,這個既不是局部變量,也不是全家變量;
  • 接着搜索的區域是當前模塊所在的全局變量的命名空間;
  • 最後搜索的區域是包含了內置名稱的命名空間。
相關文章
相關標籤/搜索