20201222_146_模組匯入_import 和 from_import 語句詳解和區別
技術標籤:學習筆記_Python程式設計基礎_Pycharm版
文章目錄
2. 模組的匯入
模組化設計的好處之一就是“程式碼可複用性高”。寫好的模組可以被反覆呼叫,重複使用。模組的匯入就是“在本模組中使用其他模組”。
2.1 import 語句匯入
import 語句的基本語法格式如下:
import 模組名 #匯入一個模組 import 模組 1,模組 2… #匯入多個模組 import 模組名 as 模組別名 #匯入模組並使用新名字
import 載入的模組分為四個通用類別:
- 使用 python 編寫的程式碼(.py 檔案);
- 包好一組模組的包;
- 使用 C 編寫並連結到 python 直譯器的內建模組;
- 已被編譯為共享庫或 DLL 的 C 或 C++擴充套件。
我們一般通過 import 語句實現模組的匯入和使用,import 本質上是使用了內建函式__import__()。
當我們通過 import 匯入一個模組時,python 直譯器進行執行,最終會生成一個物件,這個物件就代表了被載入的模組。
【例】匯入模組物件
import math
print(id(math))
print(type(math))
print(math. pi) # 通過math.成員名來訪問模組中的成員
執行結果:
從上面的例子,我們可以看到 math 模組被載入後,實際會生成一個 module 類的物件,該物件被 math 變數引用。我們可以通過 math 變數引用模組中所有的內容。
我們通過 import 匯入多個模組,本質上也是生成多個 module 類的物件而已。
有時候,我們也需要給模組起個別名,本質上,這個別名僅僅是新建立一個變數引用載入的模組物件而已。
【例2】匯入模組物件並別名化
import math as m
# 等效於
# import math
# m = math
print(m.sqrt(4))
執行結果:
2.2 from…import 匯入
Python 中可以使用 from…import 匯入模組中的成員。基本語法格式如下:
from 模組名 import 成員 1,成員 2,…
如果希望匯入一個模組中的所有成員,則可以採用如下方式:
from 模組名 import *
注意:儘量避免“from 模組名 import *”這種寫法。它表示匯入模組中所有的不是以下劃線開頭的名字都匯入到當前位置。 但你不知道你匯入什麼名字,很有可能會覆蓋掉你之前已經定義的名字。而且可讀性極其的差。一般生產環境中儘量避免使用,學習時沒有關係。
【例】使用 from…import 匯入模組指定的成員
from math import pi, sin
print(sin(pi / 2))
執行結果:
2.3 import 語句和 from…import 語句的區別
import 匯入的是模組。from…import 匯入的是模組中的一個函式/一個類。
如果進行類比的話,import 匯入的是“檔案”,我們要使用該“檔案”下的內容,必須前面加“檔名稱”。from…import 匯入的是檔案下的“內容”,我們直接使用這些“內容”即可,前面再也不需要加“檔名稱”了。
【例】
我們自定義一個模組 calculator.py
.1
"""一個實現四則運算的計算器"""
def add(a, b):
return a + b
def minus(a, b):
return a - b
class MyNum:
@staticmethod
def print123():
print(123)
我們在另一個模組 test.py 測試:
.2 匯入模組
import Calculate
a = Calculate.add(30, 40)
# add(100, 200) # 不加模組名無法識別
print(a)
執行結果:
.3 匯入模組中的指定成員
from Calculate import *
a = add(30, 40) # 無需模組名,可以直接引用裡面的函式/類
print(a)
b = MyNum()
b.print123()
執行結果: