Python之變量作用域


變量作用域

  Python 中,程序的變量並不是在哪個位置都可以訪問的,訪問權限決定於這個變量是在哪里賦值的。

  變量的作用域決定了在哪一部分程序可以訪問哪個特定的變量名稱。Python的作用域一共有4種,分別是:

  • L (Local) 局部作用域
  • E (Enclosing) 閉包函數外的函數中
  • G (Global) 全局作用域
  • B (Built-in) 內建作用域

以 L –> E –> G –>B 的規則查找,即:在局部找不到,便會去局部外的局部找(例如閉包),再找不到就會去全局找,再者去內建中找。

各作用域關系如圖:

內建作用域:

a = int(3.14) #int函數在內建作用域中

NAME='John' #NAME在全局作用域中 def fun(): name='July' #閉包函數外的函數域 def fun2(): name='Jack' #局部作用域 print(name) fun() #'Jack'

   Python 中只有模塊(module),類(class)以及函數(def、lambda)才會引入新的作用域,其它的代碼塊(如 if/elif/else/、try/except、for/while等)是不會引入新的作用域的,也就是說這這些語句內定義的變量,外部也可以訪問:

if True:
    a=123

print(a)
#--------------
123

 


免責聲明!

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



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