模塊導入的幾種方式

概念

Python 模塊是一個以 .py 結尾的 Python 文件,包含了 Python 對象定義和Python語句。每個模塊在python裏都被看作是一個獨立的文件。模塊能夠被別的程序引入,以使用該模塊中的函數等功能,這也是使用 python 標準庫的方法。python

模塊導入

模塊能夠導入其它模塊,習慣上把全部 import語句放在模塊的開頭(不要求)。模塊導入的方式有幾種:程序員

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

# 例如導入一個path模塊
import path

直接使用關鍵詞import,後面跟具體的模塊名稱,就能夠導入某一個模塊。同一個模塊無論執行了多少次import,都只會被導入一次,以防止模塊被一遍又一遍的執行。 模塊引入好後,若是要調用模塊中的函數,必須以下:shell

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

# 例如要導入pprint模塊的pprint
from pprint import pprint

在使用import語句導入模塊時會將整個模塊引入進來,而使用from...import 語句則是從模塊中導入一個指定的部分到當前命名空間中。如上面代碼中則只會導入pprint模塊中的pprint函數,其餘函數並不會導入。函數

import語句引入模塊後,若是須要使用模塊裏的函數方法,則須要加上模塊的限定名字,而from...import語句則不用加模塊的限定名字,直接使用其函數方法code

# 第一種方式
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__'時,代表該模塊自身在運行,不然是被引入。it

if __name__ == "__main__":
    print("模塊自身在運行")

模塊搜索路徑

搜索路徑是由一系列目錄名組成的,Python解釋器就依次從這些目錄中去尋找所引入的模塊。當一個模塊被導入的時候,模塊的搜索路徑爲:編譯

  • 程序的根目錄
  • PYTHONPATH環境變量設置的目錄
  • 標準庫的目錄
  • 任何可以找到的.pth文件的內容
  • 第三方擴展的site-package目錄

PYTHONPATH 變量

PYTHONPATH是Python中一個重要的環境變量,用於在導入模塊的時候搜索路徑,能夠經過以下方式訪問:import

import sys
sys.path

做爲環境變量,PYTHONPATH 由裝在一個列表裏的許多目錄組成。PYTHONPATH 的語法和 shell 變量 PATH 的同樣。 在 Windows 系統,典型的 PYTHONPATH 以下:

set PYTHONPATH=c:\python37\lib;
相關文章
相關標籤/搜索