Python學習05

1、模塊

爲了定義的所有的方法和變量都能重複利用,爲此 Python 提供了一個辦法,把這些定義存放在文件中,爲一些腳本或者交互式的解釋器實例使用,這個文件被稱爲模塊。模塊是一個包含所有你定義的函數和變量的文件,其後綴名是.py。模塊可以被別的程序引入,以使用該模塊中的函數等功能。這也是使用 python 標準庫的方法。

將程序模塊化會使得程序的組織結構清晰,維護起來更加方便。比起直接開發一個完整的程序,單獨開發一個小的模塊也會更加簡單,並且程序中的模塊與電腦中的零部件稍微不同的是:程序中的模塊可以被重複使用。所以總結下來,使用模塊既保證了代碼的重用性,又增強了程序的結構性和可維護性。另外除了自定義模塊外,我們還可以導入使用內置或第三方模塊提供的現成功能,這種“拿來主義”極大地提高了程序員的開發效率。

2、模塊的使用

2.1 import

想使用 Python 源文件,只需在另一個源文件裏執行 import 語句,語法如下:

import module1[, module2[,... moduleN]

當解釋器遇到 import 語句,如果模塊在當前的搜索路徑就會被導入。搜索路徑是一個解釋器會先進行搜索的所有目錄的列表。如想要導入模塊 module,需要把命令 import module 放在腳本的頂端。

首次導入模塊會做三件事:

1、執行源文件代碼

2、產生一個新的名稱空間用於存放源文件執行過程中產生的名字

3、在當前執行文件所在的名稱空間中得到一個名字module,該名字指向新創建的模塊名稱空間,若要引用模塊名稱空間中的名字,需要加上該前綴,,比如module.py裏有變量user,那麼使用module.user就能調用。

用import語句導入多個模塊,可以寫多行import語句

import module1
import module2
    ...
import moduleN

還可以在一行導入,用逗號分隔開不同的模塊

import module1,module2,...,moduleN

但其實第一種形式更爲規範,可讀性更強,推薦使用,而且我們導入的模塊中可能包含有python內置的模塊、第三方的模塊、自定義的模塊,爲了便於明顯地區分它們,我們通常在文件的開頭導入模塊,並且分類導入,一類模塊的導入與另外一類的導入用空行隔開,不同類別的導入順序如下:

#1. python內置模塊
#2. 第三方模塊
#3. 程序員自定義模塊

​ 當然,我們也可以在函數內導入模塊,對比在文件開頭導入模塊屬於全局作用域,在函數內導入的模塊則屬於局部的作用域。

2.2 from import

from...import...與import語句基本一致,唯一不同的是:使用import module導入模塊後,引用模塊中的名字都需要加上module.作爲前綴,而使用from module import x,則可以在當前執行文件中直接引用模塊module中的名字。無需加前綴的好處是使得我們的代碼更加簡潔,壞處則是容易與當前名稱空間中的名字衝突,如果當前名稱空間存在相同的名字,則後定義的名字會覆蓋之前定義的名字。

2.3 as

使用as語句可以在當前位置爲導入的模塊起一個別名,例如 import module as module1,通常在被導入的名字過長時採用起別名的方式來精簡代碼,另外爲被導入的名字起別名可以很好地避免與當前名字發生衝突,還有很重要的一點就是:可以保持調用方式的一致性,例如我們有兩個模塊json和pickle同時實現了load方法,作用是從一個打開的文件中解析出結構化的數據,但解析的格式不同,可以用下述代碼有選擇性地加載不同的模塊。

2.4 搜索模塊的路徑與優先級

模塊其實分爲四個通用類別,分別是:

1、使用純Python代碼編寫的py文件

2、包含一系列模塊的包

3、使用C編寫並鏈接到Python解釋器中的內置模塊

4、使用C或C++編譯的擴展模塊

在導入一個模塊時,如果該模塊已加載到內存中,則直接引用,否則會優先查找內置模塊,然後按照從左到右的順序依次檢索sys.path中定義的路徑,直到找模塊對應的文件爲止,否則拋出異常。sys.path也被稱爲模塊的搜索路徑,它是一個列表類型。

 

部分內容轉載至:https://blog.51cto.com/egon09/2462368https://www.runoob.com/python3/python3-module.html

 

發佈了6 篇原創文章 · 獲贊 1 · 訪問量 848
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章