「37」模塊的導入:import……與from……import……

「37」模塊的導入:import……與from……import……

前面一片筆記提到了Python的模塊化編程思維,所以接下來就是要學習如何使用Python已有的各種模塊,提高程序的“代碼複用性”

【0】提出問題

  1. 模塊就是數量眾多語句的封裝,使用基於此我們可以問這樣一個問題:Python中是否可以導入任何人編寫的模塊?
  2. 另外,導入模塊的方法或成員是否可以被全部調用?
  3. 由於Python中一切皆對象,從而需要佔用存儲資源,所以很多時候並不需要把模塊所有內容都導入,Python是否支持部分導入模塊內容呢?
「37」模塊的導入:import……與from……import……

【1】import導入

import 語句的基本語法格式如下:

  • import 模塊名 #導入一個模塊;
  • import 模塊 1,模塊 2… #導入多個模塊;
  • import 模塊名 as 模塊別名 #導入模塊並使用新名字

import 加載的模塊分為四個通用類別

  • 使用 python 編寫的代碼(.py 文件);
  • 已被編譯為共享庫或 DLL 的 C 或 C++擴展;
  • 包好一組模塊的包;
  • 使用 C 編寫並鏈接到 python 解釋器的內置模塊。

import 語句實現模塊的導入和使用。

當我們通過 import 導入一個模塊時,python 解釋器進行執行,最終會生成一個對象,這個對象就代表了被加載的模塊。

import math
print(id(math))
print(type(math))
print(math.pi) #通過 math.成員名來訪問模塊中的成員
「37」模塊的導入:import……與from……import……

【結論】導入的模塊確實以一個對象的形式存在;模塊的方法或成員都可以採用調用對象屬性的方式調用。

至於導入多個模塊,本質上也是生成多個 module 類的對象而已。

「37」模塊的導入:import……與from……import……

碰到模塊名稱不好記憶的情況,我們可以早導入模塊的時候就起個別名。本質上,這個別名僅僅是新創建一個變量引用加載的模塊對象而已。

「37」模塊的導入:import……與from……import……

【2】from……import導入

Python 中可以使用 from…import 導入模塊中的成員,即解決來可以導入模塊中部分內容的問題。

基本語法格式如下:

from 模塊名 import 成員 1,成員 2,…

從數學角度講,模塊的全量也是模塊的一個子集,所以也應該支撐導入全量。即:

from 模塊名 import *

「37」模塊的導入:import……與from……import……

【3】import 語句和 from...import 語句的區別

import 導入的是模塊。from...import 導入的是模塊中的一個函數/一個類。

如果進行類比的話,import 導入的是“文件”,我們要使用該“文件”下的內容,必須前面加“文件名稱”。from...import 導入的是文件下的“內容”,我們直接使用這些“內容”即可,前面再也不需要加“文件名稱”了。

現在我們通過導入自己編寫的一個模塊來作案例進行理解。

「37」模塊的導入:import……與from……import……

  1. 包含加法函數add();
  2. 包含減法函數minus();
  3. 包含打印數字的函數MyNum()。
「37」模塊的導入:import……與from……import……

【結論】

  • import導入的模塊,要調用其下的方法或成員,需要加上模塊名作為前綴;
  • from……import導入模塊下的方法或成員,則直接用方法或成員名即可實現調用。


分享到:


相關文章: