模塊 import 與from
什麽是模塊:就是一系列功能的集合體
模塊的來源 :1內置模塊 2 第三方模塊 3 自定義模塊
模塊的格式:
1 使用python編寫的.py文件
2 已被編譯為共享庫或DLL的C或C++擴展
3 把一系列模塊組織到一起的文件(註:文件下有一個_init_.py文件,該文件夾稱之為包)
4 使用C編寫病鏈接到python解釋器得內置模塊
為何要用模塊
1 使用內置的或者第三方模塊的好處是:拿來主義,可以極大提升開發效率
2 使用自定義模塊的好處是:可以減少代碼冗余(抽取我們自己程序中要公用的一些功能定義模塊,然後程序的各部分組件都去模塊中調用共享的功能)
如何用模塊
大前提:一定要區分開誰是執行文件,誰是被導入模塊
import導入模塊
首次導入模塊發生什麽事 文件名是spam.py 模塊名是spam
1 會產生一個模塊的名稱空間
2 執行文件spam.py將執行過程中產生的名字都有放到模塊的名稱空間中
3 在當前執行文件的名稱空間中拿到一個模塊名,該名字指向模塊的名稱空間
import spam
之後的導入,都是直接引用第一次導入的成果,不會重新執行文件
在執行文件中訪問模塊名稱空間中名字的語法:模塊名.名字(spam.x) 指名道姓的跟spam要名字x 肯定不會與當前執行文件中的名字沖突
總結import導入模塊:在使用時必須加上前綴:模塊名
優點:指名道姓的向某一個名稱空間要名字,肯定不會與當前名稱空間中的名字沖突
缺點:但凡應用模塊中德名字都需要加前綴,不夠簡潔
from 模塊 import 模塊名導入
首次導入模塊發生3件事 :
1 創建一個模塊的名稱空間
2 執行文件spam.py將指向過程中產生的名字都放到模塊的名稱空間中
3 在當前執行文件中拿到一個名字,改名字就是執行模塊中相對應的名字
總結:from、、、improt、、、
優點:使用時無需再加前綴,更簡潔
缺點:容易與當前名稱空間中的名字沖突
起別名 通過as關鍵字可以給模塊起別名: 模塊名一旦起別名,原模塊名就不能再使用
from spam import readl as r1
r1()
自執行與模塊區別
# __name__:
# 1.在py文件作為模塊被使用時,__name__為模塊名
# 2.在py文件自執行時,__name__為字符串 ‘__main__‘
print("共有邏輯")
if __name__ == ‘__main__‘:
# 所有自執行的邏輯
print("m6: 我是自執行的")
a = 10 # 產生的是全局的名字
else:
# 所有模塊的邏輯
print("m6: 我被導入執行的")
print(a) # 會報錯:走else就不可能走if,所以a壓根沒產生
模塊 import 與from