【Python 模塊】

Python 中的模塊(Module)是組織代碼的核心方式,通過將相關函數、類和變量封裝到獨立文件中,實現代碼復用和結構化管理。以下是模塊的核心知識點:


一、基礎概念

1. 模塊定義
  • 任何 .py 文件都是一個模塊
  • 模塊名即文件名(不含 .py 后綴)
2. 模塊結構
# my_module.pyPI = 3.14159  # 模塊級變量def add(a, b):"""加法函數"""return a + bclass Calculator:"""計算器類"""def subtract(self, a, b):return a - b

二、模塊導入

1. 基礎導入
import math          # 導入整個模塊
from datetime import datetime  # 導入特定對象
import numpy as np   # 導入并設置別名
2. 導入行為
  • 首次導入時執行模塊代碼
  • 后續導入直接引用已加載模塊
  • 模塊級代碼(如變量定義、函數聲明)只會執行一次

三、標準庫模塊

1. 常用內置模塊
模塊用途示例方法/類
math數學運算math.sqrt(), math.pi
os操作系統交互os.listdir(), os.path
sysPython解釋器相關sys.argv, sys.exit()
datetime日期時間處理datetime.now()
jsonJSON數據編解碼json.dumps(), json.load()
2. 示例代碼
import mathprint(math.sqrt(16))    # → 4.0
print(math.factorial(5))# → 120

四、第三方模塊

1. 包管理工具
pip install requests    # 安裝模塊
pip list               # 查看已安裝模塊
pip freeze > requirements.txt  # 導出依賴
2. 虛擬環境
python -m venv myenv   # 創建虛擬環境
source myenv/bin/activate  # Linux/Mac激活
myenv\Scripts\activate.bat  # Windows激活

五、模塊搜索路徑

import sys
print(sys.path)  # 輸出模塊搜索路徑列表# 添加自定義路徑(臨時)
sys.path.append("/custom/module/path")

六、高級特性

1. 包(Package)
my_package/
├── __init__.py       # 包初始化文件
├── module1.py
└── sub_package/├── __init__.py└── module2.py
2. 相對導入
# 在 sub_package/module2.py 中
from . import module1  # 相對導入同級模塊
from .. import utils   # 相對導入上級模塊
3. 動態導入
import importlibmodule = importlib.import_module("my_module")
obj = getattr(module, "my_function")
obj()
4. 模塊重載
from importlib import reloadreload(my_module)  # 重新加載已修改的模塊

七、最佳實踐

1. 模塊設計原則
  • 單一職責原則:每個模塊專注單一功能
  • 明確API:通過 __all__ 定義公開接口
    # my_module/__init__.py
    __all__ = ["public_func", "PublicClass"]
    
2. 避免循環導入
# 錯誤示例:a.py 導入 b.py,b.py 又導入 a.py
# 正確做法:重構代碼結構,提取公共部分到獨立模塊
3. 類型提示支持
# my_module.py
from typing import Listdef process_data(data: List[int]) -> List[float]:return [x * 1.1 for x in data]

八、實際案例分析

1. 配置管理模塊
# config.py
DEBUG = False
DB_CONFIG = {"host": "localhost","port": 3306,"user": "admin"
}
2. 工具函數模塊
# utils.py
import hashlibdef md5_checksum(data: bytes) -> str:return hashlib.md5(data).hexdigest()
3. 業務邏輯模塊
# order_processor.py
from .config import DB_CONFIG
from .utils import md5_checksumclass OrderProcessor:def __init__(self):self.db_config = DB_CONFIGdef process(self, order_data):checksum = md5_checksum(order_data.encode())# 存儲到數據庫...

九、常見陷阱

  1. 命名沖突

    # 錯誤示例:與標準庫模塊同名
    import string  # 實際導入自定義string.py而非標準庫
    
  2. 緩存失效

    # 修改模塊后未重新啟動解釋器導致緩存未更新
    # 解決方案:使用reload()或重啟Python進程
    
  3. 跨平臺路徑

    # 使用os.path處理路徑而非硬編碼
    import os
    config_path = os.path.join("config", "settings.ini")
    

通過合理組織模塊結構,可以構建可維護的大型項目。建議從簡單模塊開始,逐步掌握包管理和高級導入技巧,最終形成清晰的代碼架構。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/82046.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82046.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/82046.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

黑電平校正(Black Level Correction, BLC)算法

黑電平校正(Black Level Correction, BLC)算法 黑電平校正(BLC)是圖像傳感器(如CMOS/CCD)信號處理中的一個重要步驟,主要用于消除傳感器暗電流(Dark Current)導致的基線…

處理PostgreSQL數據庫事務死鎖過程

查詢pg_locks表,獲取未得到滿足的鎖信息: select * from pg_locks where granted is false ; --查詢得不到鎖的,那就是兩個互相等待對方持有的鎖查詢活動的事務會話進程,和上一步的鎖的事務對應起來: select * from …

Android開發-文本顯示

在Android應用開發中,文本顯示是用戶界面設計中最基本也是最重要的部分之一。無論是展示歡迎信息、錯誤提示還是動態內容,合理地使用文本元素能夠極大地提升用戶體驗。本文將詳細介紹如何在Android應用中有效地顯示文本,包括使用TextView組件…

基于大模型的輸卵管妊娠全流程預測與治療方案研究報告

一、引言 1.1 研究背景與意義 輸卵管妊娠作為異位妊娠中最為常見的類型,嚴重威脅著女性的生殖健康和生命安全。受精卵在輸卵管內著床發育,隨著胚胎的生長,輸卵管無法提供足夠的空間和營養支持,極易引發輸卵管破裂、大出血等嚴重并發癥,若救治不及時,甚至會導致孕產婦死…

當向量數據庫與云計算相遇:AI應用全面提速

如果將AI比作一臺高速運轉的機器引擎,那么數據便是它的燃料。 然而,存儲數據的燃料庫--傳統數據庫,在AI時代的效率瓶頸愈發明顯,已經無法滿足AI對于數據的全新需求。 因此,向量數據庫近年來迅速崛起。向量數據庫通過…

Media3 中 Window 的時間相關屬性詳解

AndroidX Media3 的 Timeline.Window 類中,與時間相關的屬性描述了媒體播放窗口(window)在時間維度上的關鍵信息。這些屬性幫助開發者理解媒體的播放范圍、起始點、持續時間以及與設備時間或直播流的同步關系。 Timeline.Window 的時間相關屬…

【Python爬蟲電商數據采集+數據分析】采集電商平臺數據信息,并做可視化演示

前言 隨著電商平臺的興起,越來越多的人開始在網上購物。而對于電商平臺來說,商品信息、價格、評論等數據是非常重要的。因此,抓取電商平臺的商品信息、價格、評論等數據成為了一項非常有價值的工作。本文將介紹如何使用Python編寫爬蟲程序&a…

工業相機的芯片CRA角度與鏡頭選型的匹配關系

工業相機的芯片CRA角度與鏡頭選型的匹配關系 Baumer工業相機?工業相機的芯片CRA角度的技術背景?工業相機的芯片CRA的信息CRA相差過大的具體表現怎樣選擇工業相機sensor的CRABaumer工業相機sensor的CRA工業相機的芯片CRA角度與鏡頭匹配好的優點 Baumer工業相機 工業相機是常用…

深度學習中常見的矩陣變換函數匯總(持續更新...)

1. 轉置操作 (Transpose) 概念:將矩陣的行和列互換應用場景: 在卷積神經網絡中轉換特征圖維度矩陣乘法運算前的維度調整數據預處理過程中的特征重排 原始矩陣 A [[1, 2, 3], 轉置后 A^T [[1, 4],[4, 5, 6]] [2, 5],[3, 6]]代碼…

day 14 SHAP可視化

一、原理——合作博弈論 SHAP(SHapley Additive exPlanations)是一種用于解釋機器學習模型預測結果的方法,它基于合作博弈論中的 Shapley 值概念。Shapley 值最初用于解決合作博弈中的利益分配問題。假設有 n 個參與者共同合作完成一項任務并…

從0開始學習大模型--Day03--Agent規劃與記憶

規劃(planning) 規劃,可以為理解觀察和思考。如果用人類來類比,當我們接到一個任務,我們的思維模式可能會像下面這樣: 1、首先會思考怎么完成這個任務。 2、然后會審視手頭上所擁有的工具,以及如何使用這…

使用 Couchbase Analytics Service 的典型步驟

下面是使用 Couchbase Analytics Service 的典型步驟,包括部署、配置、創建數據集、運行查詢以及監控優化等環節。 首先,您需要安裝并啟用 Analytics 服務;然后將節點加入集群并重平衡;接著在 Analytics 中映射數據服務的集合&am…

從零開始學習人工智能(Python高級教程)Day6-Python3 正則表達式

一、Python3 正則表達式 正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配。 在 Python 中,使用 re 模塊來處理正則表達式。 re 模塊提供了一組函數,允許你在字符串中進行模式匹配、搜索和替換操作。 r…

MATLAB導出和導入Excel文件表格數據并處理

20250507 1.MATLAB使用table函數和writetable函數將數據導出Excel表格文件 我們以高斯函數為例子,高斯函數在數學和工程領域有著廣泛的應用,它的一般形式為: 其中是均值,決定了函數的中心位置; 是標準差,決…

推薦一組WPF自定義控件開源項目

.Net Core從零學習搭建權限管理系統教程 推薦一組WPF自定義控件開源項目。 項目簡介 這是基于WPF開發的,為開發人員提供了一組方便使用自定義組件,并提供了各種常用的示例。 包含組件:數據表格、屬性列表、樹形列表、選色器、單選框列表、…

allegro出gerber時,單擊Artwork并沒有彈窗的問題

使用allegro出gerber時,有時點擊 Artwork圖標并未如愿以償的彈出窗口。。。 可按下面嘗試恢復,注,刪除前可先備份該兩支文件。。。 看時間戳,刪除最近的下面標紅兩支文件即可。

常用設計模式在 Spring Boot 項目中的實戰案例

引言? 在當今的軟件開發領域,Spring Boot 以其高效、便捷的特性成為構建 Java 應用程序的熱門框架。而設計模式作為軟件開發中的寶貴經驗總結,能夠顯著提升代碼的可維護性、可擴展性和可復用性。本文將深入探討幾種常用設計模式在 Spring Boot 項目中的…

《饒議科學》閱讀筆記

《饒議科學》 《偷竊的生物學機制:(有些)小偷有藥可治》閱讀筆記 核心內容:探討偷竊狂(kleptomania)的生物學機制及相關研究。具體要點 偷竊狂的特征:患者不可抑制地反復偷竊個人不需要、與金錢…

從零開始搭建第一個Spring Boot應用:從入門到精通

1. Spring Boot簡介與核心概念 1.1 什么是Spring Boot? Spring Boot是Spring框架的一個擴展,它簡化了基于Spring的應用程序的初始搭建和開發過程。通過自動配置和約定優于配置的原則,Spring Boot讓開發者能夠快速啟動和運行項目。 通俗理解…

c# LINQ-Query01

文章目錄 查詢數據源標準查詢分兩類即時查詢已推遲流式處理非流式處理分類表聚合Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>)Aggregate<TSour…