python模組和包

2021-09-19 07:49:35 字數 3640 閱讀 3303

⚫ 模組對應於python源**檔案;

⚫ 多個功能相似的模組可以組織成乙個包。

python中的模組包括系統模組、第三方模組和使用者自定義模組。它們實質上是以.py為副檔名的python檔案

通過匯入模組,可以使用該模組中的變數、函式和類等。

• 如果程式中包含多個可以復用的函式或類,則通常把相關的函式和類分組包含在單獨的模組(module)中。這些提供計算功能的模組稱之為模組(或函式模組),匯入並使用這些模組的程式,則稱之為客戶端程式。

• 把計算任務分離成不同模組的程式設計方法,稱之為模組化程式設計(modularprogramming)。使用模組,可以將計算任務分解為大小合理的子任務,並實現**的重用功能。

• 模組化程式設計的基本原則是先設計api(即模組提供的函式或類的功能描述),然後實現api(即編寫程式,實現模組函式或類),最後在客戶端中匯入並使用這些函式或類;

• 通過內建函式help(),可以檢視python模組的api;

import 模組名

help(模組名)

例:import math

help(math)

api定義客戶端和實現之間的契約。api是乙個明確的規範,規定「實現的具體功能是什麼

api通常由兩部分組成:可用函式的簽名的精確規範,以及描述函式作用的非正式自然語言描述。api一般使用**的形式,描述模組中的變數、函式和類

當編寫乙個新模組時,建議先設計api,然後實現模組

• (1)先設計api,再實現模組

• (2)控制模組的規模,只為客戶端提供需要的函式。實現包含大量函式的模組會導致模組的複雜性。例如,python的math模組中就不包含正割函式、餘割函式和餘切函式,因為這些函式很容易通過函式math.sin()、math.cos()和math.tan()的計算而得

• (3)在模組中編寫測試**,並消除全域性**

• (4)使用私有函式實現不被外部客戶端呼叫的模組函式

• (5)通過文件提供模組幫助資訊

• 「實現」是指實現用於重用的函式或類的**,模組的實現就是若干實現函式或類的**的集合,儲存在乙個字尾為.py的檔案中;

• 模組的實現必須遵循api規約,可以採用不同演算法實現api,這為模組的改進和版本公升級提供了無縫對接,只需要使用遵循api的新的實現,所有客戶端程式無須修改即可以正常執行。

• 客戶端遵循api提供的呼叫介面,匯入和呼叫模組中實現的函式功能;

• api允許任何客戶端直接使用模組,而無需檢測模組中定義的**,例如可以直接使用模組math和random等。

• 可以編寫大規模的系統程式

• 控制程式的複雜度

• 實現**重用

• 增強可維護性

方式一方式二

模組的匯入

import 模組名

from 模組名 import 函式名或:from 模組名 import *

匯入示例

import combinatorial

from combinatorial import fac,comb或者:from combinatorial import *

函式呼叫

模組名.函式名

函式名函式呼叫示例

combinatorial.fac(10)

fac(10)

(1)import 模組1,模組2…

(2)from 模組名 import 方法/類/物件

(3)from 模組名 import * (『*』表示可以用所有方法)

• python模組對應於包含python**的原始檔(其擴充套件名為.py),在檔案中可以定義變數、函式和類;

• 在模組中,除了可以定義變數、函式和類之外,還可以包含一般的語句,稱之為主塊(全域性語句)。當執行該模組,或匯入該模組時,主塊語句將依次執行。

python檔案中的每個檔案都可以做為乙個模組存在,檔名即模組名。

import os

os.getcwd() #檢視當前路徑

os.chdir(' ') #修改當前路徑

import sys

sys.path #檢視搜尋路徑

在.py檔案中寫好函式,import後可以用其中的函式

import 模組名

模組名.函式名()

或:from 模組名 import *

函式名()

• 匯入模組時,直譯器按下列目錄搜尋路徑和檔案搜尋順序查詢並匯入檔案。目錄搜尋路徑為:

• (1)當前目錄。啟動互動式python的目錄,或python主程式位於的目錄。

• (2)作業系統環境變數pythonpath中指定的目錄。

• (3)python標準庫目錄

"——all——" 和"——name——"

——all——屬性

——all—— = 控制模組裡那些功能可以用*呼叫

——name——屬性

通過特殊變數__name__可以獲取模組的名稱

• 每個模組都有乙個名稱,通過特殊變數__name__可以獲取模組的名稱

• 特別地,當乙個模組被使用者單獨執行時,其__name__的值為』main』。故可以把模組源**檔案的測試**寫在相應的測試判斷中,以保證只有單獨執行時,才會執行測試**

➢包是python引入的分層次的檔案目錄結構,它定義了乙個由模組及子包,和子包下的子包等組成的 python 的應用環境。引入了包以後,只要頂層的包名不與別人衝突,那所有模組都不會與別人衝突。

➢每乙個python的包目錄下面都會有名為__init__.py的特殊檔案,該檔案可以為空檔案,但是必須存在,它表明這個目錄不是普通的目錄結構,而是乙個包,裡面包含模組。

• 模組中定義的成員,包括變數、函式和類,可以通過內建的函式dir()查詢,也可以通過help()函式查詢其幫助資訊

• 【例】列舉模組成員示例

python 模組和包 python模組和包

一.模組 python 模組 module 是乙個 python 檔案,以 py 結尾,包含了 python 物件定義和python語句。模組能定義函式,類和變數,模組裡也能包含可執行的 二.匯入模組 1.語法 import模組名from 模組名 import功能名from 模組名 import i...

Python 模組和包

包 模組的一種組織結構 乙個包由多個模組構成,即包含多個.py檔案 1匯入包的幾種形式 1 import module 將module模組中屬性列表的所有屬性匯入執行環境,使用時需要新增模組名稱,例如 module.func 2 from module import attrname,fucnnam...

python 模組和包

1.內建模組 本身就帶有的庫,就叫做python的內建的庫。模組 庫 一些常見的內建模組 os 和作業系統相關 os.path sys 和系統相關 sys.path re 正規表示式 2.第三方模組 非python本身自帶的庫,就是所謂的第三方的庫 3.模組的匯入 import as yy from...