Python:模塊

一、Python模塊基礎概念

1. 什么是Python模塊?

在 Python 中,模塊(Module)?是一個包含 Python 代碼的文件(擴展名為?.py),用于組織代碼、實現功能復用和命名空間管理。模塊可以包含變量、函數、類等,并且可以被其他 Python 程序導入和使用。

模塊的主要作用是:

  • 代碼復用:避免重復造輪子

  • 命名空間管理:防止命名沖突(如math.sqrt?vs?numpy.sqrt

  • 項目結構化:將大型項目拆分為多個模塊,便于協作和維護

2. 模塊與包的區別

  • 模塊:單個.py文件

  • :包含__init__.py的目錄,可以包含多個模塊

二、模塊的創建與使用

1. 創建自定義模塊

創建一個名為calculator.py的模塊:

# calculator.py
"""一個簡單的計算器模塊"""def add(a, b):"""返回兩個數的和"""return a + bdef subtract(a, b):"""返回兩個數的差"""return a - bPI = 3.14159  # 模塊級變量

2. 模塊導入的4種方式

(1) 導入整個模塊
import calculatorprint(calculator.add(2, 3))      # 輸出: 5
print(calculator.PI)             # 輸出: 3.14159
(2) 導入特定函數/變量?
from calculator import add, PIprint(add(5, 3))  # 輸出: 8
print(PI)         # 輸出: 3.14159
(3) 給模塊起別名?
import calculator as calcprint(calc.subtract(10, 4))  # 輸出: 6
(4) 導入所有內容(不推薦)?
from calculator import *  # 可能導致命名沖突print(add(1, 2))  # 輸出: 3

三、Python內置模塊詳解

1. math模塊(數學計算)

常用API及參數說明:

函數/常量參數說明返回值示例
math.sqrt(x)x: 非負數平方根math.sqrt(16)→4.0
math.ceil(x)x: 實數向上取整math.ceil(3.2)→4
math.floor(x)x: 實數向下取整math.floor(3.8)→3
math.pow(x, y)x,y: 數字x的y次方math.pow(2,3)→8.0

實戰示例:

import math# 計算兩點間距離
def distance(x1, y1, x2, y2):return math.sqrt(math.pow(x2-x1, 2) + math.pow(y2-y1, 2))print(f"距離: {distance(0, 0, 3, 4):.2f}")  # 輸出: 距離: 5.00

2. random模塊(隨機數生成)

常用API詳解:

函數參數說明示例
random()[0.0,1.0)隨機浮點數random.random()→0.548
randint(a,b)a,b: 整數[a,b]隨機整數randint(1,10)→7
choice(seq)seq: 序列隨機選擇元素choice(['A','B'])→'B'
shuffle(lst)lst: 列表原地打亂列表shuffle([1,2,3])

實戰示例:

import random# 生成驗證碼
def generate_code(length=6):chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'return ''.join(random.choice(chars) for _ in range(length))print(f"驗證碼: {generate_code()}")  # 輸出類似: 驗證碼: 7A2B9C

3. datetime模塊(日期時間處理)

核心類與方法:

類/方法參數說明示例
datetime.now()當前日期時間now()→2023-10-01 14:30:00
timedelta()days,seconds等時間間隔timedelta(days=7)
strftime(format)format: 格式字符串格式化輸出now().strftime("%Y-%m-%d")

實戰示例:

from datetime import datetime, timedelta# 計算日期差值
start_date = datetime(2023, 1, 1)
end_date = datetime.now()
delta = end_date - start_dateprint(f"距離2023年元旦已過去: {delta.days}天")  # 輸出: 距離2023年元旦已過去: 273天

四、第三方模塊實戰(requests為例)

1. 安裝與基礎使用

pip install requests

2. API詳解與參數說明

requests.get()參數詳解:

參數類型說明必填
urlstr請求URL
paramsdict查詢參數
headersdict請求頭
timeoutfloat超時時間(秒)

requests.post()額外參數:

參數類型說明
datadict/str表單數據
jsondictJSON數據

3. 實戰示例

示例1:GET請求帶參數
import requests# 查詢GitHub用戶信息
params = {'q': 'python', 'sort': 'stars'}
headers = {'Accept': 'application/vnd.github.v3+json'}response = requests.get('https://api.github.com/search/repositories',params=params,headers=headers,timeout=5
)if response.status_code == 200:data = response.json()print(f"找到{data['total_count']}個Python倉庫")
else:print(f"請求失敗,狀態碼: {response.status_code}")
示例2:POST請求提交JSON?
import requests# 模擬API登錄
url = "https://api.example.com/login"
payload = {"username": "admin","password": "123456"
}
headers = {"Content-Type": "application/json","User-Agent": "MyApp/1.0"
}try:response = requests.post(url,json=payload,headers=headers,timeout=3)response.raise_for_status()  # 檢查HTTP錯誤print("登錄成功!", response.json())
except requests.exceptions.RequestException as e:print(f"請求出錯: {e}")

五、高級模塊技巧

1. 模塊搜索路徑管理

import sys
from pathlib import Path# 添加自定義模塊路徑
custom_path = Path(__file__).parent / "lib"
sys.path.append(str(custom_path))print("當前模塊搜索路徑:")
for path in sys.path:print(f"- {path}")

2. 動態導入模塊?

import importlib# 動態導入模塊
module_name = "math"
math = importlib.import_module(module_name)
print(f"動態導入的模塊: {math.sqrt(16)}")  # 輸出: 4.0

3. 模塊重載?

import importlib
import mymodule# 修改mymodule后重新加載
importlib.reload(mymodule)

六、最佳實踐與常見問題

1. 模塊設計原則

  1. 單一職責:一個模塊只做一件事

  2. 合理命名:使用小寫字母和下劃線(如data_utils.py

  3. 文檔完善:包含模塊docstring和函數docstring

2. 常見錯誤解決

問題1:ModuleNotFoundError

# 錯誤:No module named 'mymodule'
# 解決:
# 1. 檢查文件是否存在
# 2. 檢查sys.path是否包含模塊所在目錄

問題2:循環導入?

# 模塊A導入模塊B,同時模塊B導入模塊A → 導致錯誤
# 解決:重構代碼,提取公共部分到第三個模塊

七、總結

  • 模塊是Python程序的基本組織單元,合理使用可以大幅提升代碼質量

  • 內置模塊滿足基礎需求,第三方模塊擴展功能

  • requests等API調用要注意參數傳遞和異常處理

  • 高級技巧如動態導入可以增加程序靈活性

學習路徑建議:

  1. 掌握常用內置模塊(math/datetime/os等)

  2. 學習1-2個流行第三方模塊(requests/numpy)

  3. 實踐模塊化項目開發

通過本指南,你應該能夠:
? 創建和使用自定義模塊
? 熟練使用常見內置模塊
? 正確調用API接口
? 解決模塊相關常見問題

擴展學習:

  • Python官方模塊索引

  • Requests官方文檔

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

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

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

相關文章

C 語言指針與作用域詳解

一、指針基礎概念 (一)指針的本質 指針是 C 語言中一個重要的概念,其本質是內存地址。在計算機內存中,每個字節都有唯一的編號,這個編號就是我們所說的內存地址,而指針變量就是用于存儲這些內存地址的變量…

解鎖阿里云ACK:開啟Kubernetes容器化應用新時代

引言:云原生時代下的 ACK 在當今數字化飛速發展的時代,云原生技術正以前所未有的速度改變著軟件開發和部署的格局。隨著企業對應用敏捷性、彈性擴展以及成本優化的需求日益增長,云原生已成為眾多企業實現數字化轉型的關鍵路徑。在云原生的技…

【C++基礎】內存管理四重奏:malloc/free vs new/delete - 面試高頻考點與真題解析

在 C/C 編程中,內存管理是核心基礎技能,而malloc/free和new/delete作為兩套內存分配釋放機制,是面試中高頻出現的考點。 一、內存管理的 "雙生花":基礎概念解析 1.1 malloc/free:C 語言的內存管家 malloc全…

Dify+Ollama+QwQ:3步本地部署,開啟AI搜索新篇章

如何來評價本地化部署的價值與優勢分析: 成本優化與隱私保障 自定義搜索插件,告別信息過載 一鍵生成報告、分析,效率翻倍! 接下來我們就嘗試跟隨來部署本地的價值所在! 1:安裝Ollama & 部署QwQ模型 1.1 安裝O…

FAISS 簡介及其與 GPT 的對接(RAG)

什么是 FAISS? FAISS (Facebook AI Similarity Search) 是 Facebook AI 團隊開發的一個高效的相似性搜索和密集向量聚類的庫。它主要用于: 大規模向量相似性搜索高維向量最近鄰檢索向量聚類 https://github.com/facebookresearch/faissFAISS 特別適合處理…

【Apache Doris 深度實戰:從 MPP 架構到實時分析,解鎖三大數據模型的性能優化秘籍】

一、安裝部署 安裝教程:GitHub地址 Doc文檔:Apache Doris 簡介 - Apache Doris 二、功能及作用 Apache Doris 是一款基于MPP 架構的高性能、實時分析型數據庫。它以高效、簡單和統一的特性著稱,能夠在亞秒級的時間內返回海量數據的查詢結果…

MySQL主從復制與讀寫分離概述

前言: 在數據驅動的現代應用中,數據庫面臨高并發讀寫與海量存儲的雙重挑戰。單一數據庫實例在性能、可用性及擴展性上逐漸成為瓶頸。MySQL主從復制(Master-Slave Replication)與讀寫分離(Read/Write Splitting&#xf…

數據庫-元數據表

1. 什么是元數據表元數據:數據的數據,用以描述數據的信息也是數據,被稱為元數據2. 獲取元數據的方法MySQL提供了以下三種方法用于獲取數據庫對象的元數據:show語句從INFORMATION_SCHEMA數據庫里查詢相關表(information…

【STM32】通用定時器PWM

STM32 通用定時器 PWM 輸出完全解析(以 TIM3_CH1 為例) PWM 輸出基本原理 PWM(Pulse Width Modulation)即脈沖寬度調制,是由定時器通過比較 CNT 與 CCR 寄存器實現的。 信號產生原理: ARR 決定周期&#…

python學習打卡:DAY 21 常見的降維算法

知識點回顧: LDA線性判別PCA主成分分析t-sne降維 還有一些其他的降維方式,也就是最重要的詞向量的加工,我們未來再說 浙大疏錦行

基于SpringBoot和Leaflet集成在線天氣服務的區縣當前天氣WebGIS實戰

目錄 前言 一、需求描述 1、功能需求 2、技術實現流程 二、SpringBoot后臺實現 1、控制層實現 2、區縣數據返回 三、WebGIS前端實現 1、區位信息展示 2、天氣信息展示 四、成果展示 1、魔都上海 2、蜀地成都 3、湖南桂東 五、總結 前言 在當今數字化時…

文心開源:文心大模型4.5系列全面開放,AI普惠時代加速到來

一場由4240億參數模型領銜的開源盛宴,正在重塑中國AI生態的底層邏輯 2025年6月30日,百度如約宣布全面開源其旗艦產品——文心大模型4.5系列。一次性開源10款模型,覆蓋從4240億參數的MoE多模態巨無霸到輕巧的0.3B端側模型,并同步開…

【運算放大器專題】基礎篇

1.1 運算放大器是放大了個寂寞嗎?—初識運算放大器 為了解決震蕩問題,人為加了一些補償網絡之后導致的高頻特性差 1.2歐姆定律和獨立源 1正弦2方波3脈沖 電壓源是平行于i軸的橫線 1.3有伴源和運放緩沖器 有伴指的是有電阻,有伴是壞事&#…

英偉達 jetson nano 從NFS啟動,使用英偉達提供的rootfs根文件系統

0、目標 為了方便驅動階段的開發,并且使用英偉達提供的上層應用,這里希望使jetson nano 從NFS啟動,同時使用英偉達提供的rootfs根文件系統。 1、硬件準備 確保jetson nano 板子和開發主機之間使用網線進行連接(保持板子和開發主…

廣州華銳互動:以創新科技賦能教育,開啟沉浸式學習?

在教育領域,廣州華銳互動致力于打破傳統教學的局限性,為師生們帶來全新的沉浸式學習體驗。廣州華銳互動通過開發 VR 虛擬教學課件,將抽象的知識轉化為生動、逼真的虛擬場景,讓學生能夠身臨其境地感受知識的魅力 。比如在歷史課上&…

Grok 4 最新技術評測與發布指南

TL;DR:馬斯克跳過Grok 3.5直接發布Grok 4,計劃在7月4日后上線,專注編程模型優化,這次"極限迭代"能否讓馬斯克在AI軍備競賽中翻盤? 📋 文章目錄 🚀 Grok 4發布概況🏆 Grok…

為什么音視頻通話需要邊緣加速

? 主要原因 ? 降低傳輸延遲 用戶與邊緣節點之間通常1-2跳即可完成連接,避免跨國、跨運營商長鏈路傳輸 保障音視頻信令、媒體流快速到達,控制端到端延遲 ? 提升弱網環境下的連接穩定性 邊緣節點具備鏈路優化、丟包補償、轉發中繼功能 即使在WiFi切…

小架構step系列05:Springboot三種運行模式

1 概述 前面搭建工程的例子,運行的是一個桌面程序,并不是一個Web程序,在這篇中我們把它改為Web程序,同時從啟動角度看看它們的區別。 2 Web模式 2.1 桌面例子 回顧一下前面的例子,其pom.xml的配置如下:…

LoRaWAN的設備類型有哪幾種?

LoRaWAN(Long Range Wide Area Network)是一種專為物聯網(IoT)設備設計的低功耗、長距離通信協議。它根據設備的功能和功耗需求,將設備分為三種類型:Class A、Class B 和 Class C。每種設備類型都有其獨特的…

三維目標檢測|Iou3D 代碼解讀一

本文對OpenPCDet項目中的iou3d模塊中的iou3d_nms_kernel.cu代碼進行解讀,本次解決的函數是box_overlap,它的輸入是兩個包圍盒,輸出是兩個包圍盒在bev下的重疊面積,計算流程是 確定box_a和box_b的四個角落坐標 從包圍盒中提取坐標值…