1. 程式人生 > >模塊 import 與from

模塊 import 與from

nbsp 分組 集合 調用 系列 全局 代碼 port 組織

什麽是模塊:就是一系列功能的集合體

  模塊的來源 :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