python函數的嵌套


1. 全局命名空間--> 我們直接在py⽂件中, 函數外聲明的變量都屬於全局命名空間
 2. 局部命名空間--> 在函數中聲明的變量會放在局部命名空間
 3. 內置命名空間---> 存放python解釋器為我們提供的名字, list, tuple, str, int這些都是內
置命名空間

加載順序:
 1. 內置命名空間
 2. 全局命名空間
 3. 局部命名空間(函數被執⾏的時候)
 
 取值順序:
 1. 局部命名空間
 2. 全局命名空間
 3. 內置命名空間

作⽤域: 作⽤域就是作⽤范圍, 按照⽣效范圍來看分為 全局作⽤域和局部作⽤域
 全局作⽤域: 包含內置命名空間和全局命名空間. 在整個⽂件的任何位置都可以使⽤(遵循
從上上到下逐⾏執⾏). 局部作⽤域: 在函數內部可以使⽤.
 
 作⽤域命名空間:
 1. 全局作⽤域: 全局命名空間 + 內置命名空間
 2. 局部作⽤域: 局部命名空間

我們可以通過globals()函數來查看全局作⽤域中的內容, 也可以通過locals()來查看局部作
⽤域中的變量和函數信息

a = 10
def func():
  a = 40
  b = 20
  def abc():
  print("哈哈")
  print(a, b) # 這⾥使⽤的是局部作⽤域
  print(globals()) # 打印全局作⽤域中的內容
  print(locals()) # 打印局部作⽤域中的內容
func()

 關鍵字global和nonlocal

global表⽰. 不再使⽤局部作⽤域中的內容了. ⽽改⽤全局作⽤域中的變量

被global聲明過的變量在內置中可以被更改,內存地址也會被改變

如果是可變數據類型,可直接被更改,但不會改變內存地址

nonlocal 表⽰在局部作⽤域中, 調⽤⽗級命名空間中的變量.

被nonlocal聲明的變量可以改變除了全局變量外所有父空間的變量

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM