1. 程式人生 > >模組匯入的幾種方式

模組匯入的幾種方式

概念

Python 模組是一個以 .py 結尾的 Python 檔案,包含了 Python 物件定義和Python語句。每一個模組在python裡都被看做是一個獨立的檔案。模組可以被別的程式引入,以使用該模組中的函式等功能,這也是使用 python 標準庫的方法。

模組匯入

模組可以匯入其它模組,習慣上把所有 import語句放在模組的開頭(不要求)。模組匯入的方式有幾種:

  • 方式一:使用 import 語句來引入模組
import module1[, module2[,... moduleN]]

# 例如匯入一個path模組
import path

直接使用關鍵詞import,後面跟具體的模組名稱,就可以匯入某一個模組。同一個模組不管執行了多少次import

,都只會被匯入一次,以防止模組被一遍又一遍的執行。 模組引入好後,如果要呼叫模組中的函式,必須如下:

模組名.函式名
  • 方式二:使用from…import 語句來引入模組
from modname import name1[, name2[, ... nameN]]

# 例如要匯入pprint模組的pprint
from pprint import pprint

在使用import語句匯入模組時會將整個模組引入進來,而使用from...import 語句則是從模組中匯入一個指定的部分到當前名稱空間中。如上面程式碼中則只會匯入pprint模組中的pprint函式,其他函式並不會匯入。

import語句

引入模組後,如果需要使用模組裡的函式方法,則需要加上模組的限定名字,而from...import語句則不用加模組的限定名字,直接使用其函式方法

# 第一種方式
import pprint
pprint.pprint("hello world")

# 第二種方式
from pprint import pprint
pprint("hello world")

  • 方式三:使用from…import* 語句來引入模組

from…import*語句表示把一個模組的所有內容全都匯入到當前的名稱空間。

from modname import *

在多數情況下,Python程式設計師都不會使用這個功能,因為它在直譯器中引入了一組未知的名稱,而它們很可能會覆蓋一些你已經定義過的東西。 注意通常情況下從一個模組或者包內調入 * 的做法是不太被接受的, 因為這通常會導致程式碼的可讀性很差。不過,在互動式編譯器中為了節省打字可以這麼用。

模組的好處

  • 大大提高了程式碼的可維護性;
  • 程式碼不必從零開始,一個模組編寫完畢之後,其他模組可以直接呼叫,節約了工作時間;
  • 避免函式名稱和變數名稱重複,在不同的模組中可以存在相同名字的函式名和變數名,但是儘量不要和系統內建的模組名稱重複;

__name__屬性

一個模組被另一個程式第一次引入時,其主程式將執行。如果我們想在模組被引入時,模組中的某一程式塊不執行,我們可以用__name__屬性來使該程式塊僅在該模組自身執行時執行。 每個模組都有一個__name__屬性,當其值是'__main__'時,表明該模組自身在執行,否則是被引入。

if __name__ == "__main__":
    print("模組自身在執行")

模組搜尋路徑

搜尋路徑是由一系列目錄名組成的,Python直譯器就依次從這些目錄中去尋找所引入的模組。當一個模組被匯入的時候,模組的搜尋路徑為:

  • 程式的根目錄
  • PYTHONPATH環境變數設定的目錄
  • 標準庫的目錄
  • 任何能夠找到的.pth檔案的內容
  • 第三方擴充套件的site-package目錄

PYTHONPATH 變數

PYTHONPATH是Python中一個重要的環境變數,用於在匯入模組的時候搜尋路徑,可以通過如下方式訪問:

import sys
sys.path

作為環境變數,PYTHONPATH 由裝在一個列表裡的許多目錄組成。PYTHONPATH 的語法和 shell 變數 PATH 的一樣。 在 Windows 系統,典型的 PYTHONPATH 如下:

set PYTHONPATH=c:\py