Python 中的名稱空間和作用域
變數是對映到物件的名字(識別符號)。一個 名稱空間 是一個變數名(鍵)和其對應的物件(值)的字典。
一個 Python 語句可以訪問 本地名稱空間 中的變數和 全域性名稱空間 中的變數。如果一個本地變數和一個全域性變數具有相同的名字,則本地變數將覆蓋全域性變數。
每個函式都有其自己的本地名稱空間。類方法遵循與普通函式相同的範圍規則。
Python 根據變數是本地變數還是全域性變數進行準確猜測。它假設在函式中分配值的任何變數都是本地變數。
因此,要為函式中的全域性變數分配值,你必須首先使用 global 語句。
語句 global VarName 告訴 Python,VarName 是一個全域性變數。Python 會停止在本地名稱空間中搜索該變數。
例如,我們在全域性名稱空間中定義了一個變數 Money 。在函式 Money 中,我們給 Money 賦了一個值,因此 Python 將 Money 視為一個本地變數。然而,我們在設定本地變數 Money 的值之前訪問了該值,所以結果是未繫結本地變數錯誤。取消註釋 global 語句可以解決這個問題。
#!/usr/bin/python Money = 2000 def AddMoney(): # Uncomment the following line to fix the code: # global Money Money = Money + 1 print Money AddMoney() print Money
廣告