python的模組資料是哪裡來的,首先需要知道的是Python是怎麼找到這個包模組的,然後再深入了解命名空間的概念,就能知道python的模組資料是哪裡來的了。
搜尋路徑
當你匯入模組,Python 解析器對模組位置的搜尋順序是:
1、目前目錄
2、如果不在目前目錄,Python 則搜尋在shell 變數PYTHONPATH 下的每個目錄。
3、如果都找不到,Python會察看預設路徑。 UNIX下,預設路徑一般為/usr/local/lib/python/。
模組搜尋路徑儲存在 system 模組的 sys.path 變數中。變數裡包含目前目錄,PYTHONPATH和由安裝過程決定的預設目錄。
命名空間和作用域
變數是擁有匹配物件的名字(識別符)。命名空間是一個包含了變數名稱們(鍵)和它們各自對應的物件們(值)的字典。
一個 Python 表達式可以存取局部命名空間和全域命名空間裡的變數。如果一個局部變數和一個全域變數重名,則局部變數會覆寫全域變數。
每個函數都有自己的命名空間。類別的方法的作用域規則和通常函數的一樣。
Python 會聰明地猜測一個變數是局部的還是全域的,它假設任何在函數內賦值的變數都是局部的。
因此,如果要給函數內的全域變數賦值,必須使用 global 語句。
global VarName 的表達式會告訴 Python, VarName 是一個全域變量,這樣 Python 就不會在局部命名空間裡尋找這個變數了。
例如,我們在全域命名空間裡定義一個變數 Money。我們再在函數內給變數 Money 賦值,然後 Python 會假定 Money 是一個局部變數。然而,我們並沒有在訪問前宣告一個局部變數 Money,結果就是會出現一個 UnboundLocalError 的錯誤。取消 global 語句前的註解符就能解決這個問題。
#!/usr/bin/python # -*- coding: UTF-8 -*- Money = 2000 def AddMoney(): # 想改正代码就取消以下注释: # global Money Money = Money + 1 print Money AddMoney() print Money
以上是python的模組資料是哪裡來的的詳細內容。更多資訊請關注PHP中文網其他相關文章!