在Python3中查找變量的順序為:「在局部找不到,便會去局部外的局部找(例如閉包),再找不到就會去全局找,再去內置中找」。可以看一個具體的例子。
Python 的一個內建值 int,我們首先將其賦值為 0,然後定義一個函數 fun1()。
函數 fun1() 的作用就是調用函數 fun2() 來列印 int 的值。
調用函數 fun1():
因為 local 中的 int = 2,函數將其列印出來。
將函數 fun2() 中的 int = 2 刪除:
調用函數 fun1():
因為 local 找不到 int 的值,就去上一層 non-local 尋找,發現 int = 1 並列印。
而進一步刪除函數 fun1() 中的 int = 1:
調用函數 fun1():
因為 local 和 non-local 都找不到 int 的值,便去 global 中尋找,發現 int = 0 並列印。
若刪除 int = 0這一條件:
調用函數 fun1():
因為 local、non-local、global 中都沒有 int 的值,便去 built-in 中尋找 int 的值,即: