什麼是模組:乙個模組就是包含了python定義和宣告的檔案,檔名就是模組名字加上.py
但其實import載入的模組分為4個通用類別。
1 使用python編寫的**
2 已被編譯為共享庫或dll的c或c++擴充套件
3 包好一組模組的包
4 使用c編寫並鏈結到python直譯器的內建模組
如何匯入模組
同級目錄下匯入spam模組:
#spam.py
money = 1000
import spamprint(spam.money)
#1000
執行這個匯入命令會
1、執行匯入的模組檔案,並將模組名載入到記憶體,所以只有第一次匯入才會執行
2、把這個模組中的命名空間當做全域性命名空間
3、在當前位置拿到乙個模組名,可以指向2中的命名空間(spam.money)
#為模組名起名
importspam as a
print(a.money)
#1000
#一行中匯入多個模組
import sys,os
1、這種匯入方式不必使用模組名加點的方式引用模組變數,直接使用變數名即可
from spam import moneyprint(money)
#1000
2、當前有重新定義的變數名則會覆蓋模組中的變數名
from spam importmoney
money =1111
(money)
#1111
3、from spam import * 把spam中所有的不是以下劃線(_)開頭的名字都匯入到當前位置,大部分情況下我們的python程式不應該使用這種匯入方式,因為*你不知道你匯入什麼名字,很有可能會覆蓋掉你之前已經定義的名字。而且可讀性極其的差,在互動式環境中匯入時沒有問題。
在模組中使用
__all__=['money','read1']
則呼叫此模組時只有money和read1變數名可呼叫
python直譯器在啟動時會自動載入一些模組,可以使用sys.modules檢視
在第一次匯入某個模組時(比如spam),會先檢查該模組是否已經被載入到記憶體中(當前執行檔案的命名空間對應的記憶體),如果有則直接引用
如果沒有,直譯器則會查詢同名的內建模組,如果還沒有找到就從sys.path給出的目錄列表中依次尋找spam.py檔案。
所以總結模組的查詢順序是:記憶體中已經載入的模組->內建模組->sys.path路徑中包含的模組
需要特別注意的是:我們自定義的模組名不應該與系統內建模組重名。雖然每次都說,但是仍然會有人不停的犯錯。
在初始化後,python程式可以修改sys.path,路徑放到前面的優先於標準庫被載入。
python模組匯入與模組包匯入
main.py程式第一次匯入指定檔案mod.py時,執行 找到模組檔案mod.py 編譯成位元組碼 可選 執行.pyc位元組碼,建立mod.py中定義的物件。匯入模組後,模組物件會被儲存在sys.modules的表中。每次匯入時,若此表中已存在相關模組,以上3步會被跳過。1.搜尋模組檔案 按順序 程...
python 包 模組匯入
os.getenv path 系統可執行程式位置 sys.path可匯入的python包位置 python module 的 path 屬性 可顯示每個包的檔案位置 what is pythonpath,what is python package what can we do with init ...
匯入模組 和 包
一 模組 模組一共三種 python標準庫 第三方模組 應用程式自定義模組 在cmd命令終端,檢視命令os 來自第三方 time模組來自第三方 模組兩種執行方式 1 用於啟動執行 2 用於被呼叫執行 key import module 將執行檔案 module 的目錄路徑插入到sys.path的第乙...