欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python常見模塊及其用法示例詳解

 更新時間:2025年07月29日 09:40:09   作者:木子杳衫  
模塊導(dǎo)入是Python開發(fā)中的一個重要環(huán)節(jié),但如果不小心,可能會遇到各種錯誤,這篇文章主要給大家介紹了關(guān)于Python常見模塊及其用法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

1. 什么是模塊和包?

  • 模塊是一個包含python代碼的文件(后綴名.py),內(nèi)容可以包括函數(shù)、類、變量等
# 文件名為hello.py
def func():
	print("hello world!")
func()

使用模塊

import hello
  • 包是包含多個模塊的目錄,它通過__init__.py文件(可以是空文件)來標(biāo)識這是一個Python包。
mypackage/
│── __init__.py
│── module1.py
│── module2.py
└── subpackage/
    │── __init__.py
    │── module3.py

使用包

from mypackage import module1,module2
from mypackage.subpackage import module3

2. 常見的模塊及其用法

本文主要講解模塊有:time random os sys json

  1. time 時間處理
  2. random 生成隨機(jī)數(shù)和實現(xiàn)隨機(jī)選擇功能
  3. os 操作系統(tǒng)交互
  4. sys 系統(tǒng)相關(guān)功能
  5. json JSON 數(shù)據(jù)處理

2.1 time

時間處理

概覽

方法功能示例
time()時間戳,1970年1月1日00:00:00 UTC至今的秒數(shù)1753161307.4428105
ctime()獲取可讀的時間字符串“Tue Jul 22 13:15:07 2025"
localtime()獲取結(jié)構(gòu)化時間對象(包含年、月、日等字段)time.struct_time(tm_year=2025, tm_mon=7, tm_mday=22, tm_hour=13, tm_min=15, tm_sec=7, tm_wday=1, tm_yday=203, tm_isdst=0)
strftime("%Y-%m-%d %H:%M:%S",struct_time)時間格式化(字符串)“2025-07-22 13:33:09”
strptime(“2025-07-22”)時間解析“time.struct_time(tm_year=2025, tm_mon=7, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=203, tm_isdst=-1)”
perf_counter())精確計時(性能測試)耗時時間
sleep(2.5)程序暫停停頓2.5秒
localtime()時間戳 -> struct_time時間類型轉(zhuǎn)化
mktime()struct_time -> 時間戳時間類型轉(zhuǎn)化

2.1.1 時間獲取方法

  1. time.time()
  • 功能:獲取當(dāng)前的時間戳(1970年1月1日00:00:00 UTC至今的秒數(shù))
  • 示例
    import time
    print(time.time())  # 輸出:1753161307.4428105(當(dāng)前時間)
    
  1. time.ctime()
  • 功能:獲取可讀的時間字符串
  • 示例
print(time.ctime()) 
# 輸出:“Tue Jul 22 13:15:07 2025”
  1. time.localtime()
  • 功能:獲取結(jié)構(gòu)化時間對象(包含年、月、日等字段)
  • 示例
struct_time = time.localtime()
print(struct_time.tm_year, struct_time.tm_mon,struct_time.tm_mday) 
# 輸出:2025 7 22

2.1.2 時間格式化與解析

  1. time.strftime()
  • 功能:時間格式化
  • 示例
struct_time = time.localtime()
formatted = time.strftime("%Y-%m-%d %H:%M:%S",struct_time)
# 輸出 2025-07-22 13:33:09
  1. time.strptime()
  • 功能:時間解析(字符串 -> struct_time)
  • 示例
parsed_time = time.strptime("2025-07-22", "%Y-%m-%d") 
print(parsed_time)
# 輸出:
# time.struct_time(tm_year=2025, tm_mon=7, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=203, tm_isdst=-1)

2.1.3 程序計時與延遲

  1. time.pref_counter()
  • 功能:精確計時(性能測試)
  • 示例
start = time.perf_counter()
time.sleep(2)
end = time.perf_counter()
print(f"執(zhí)行耗時:{end - start:.4f}秒")
# 輸出:
# 執(zhí)行耗時:2.0003秒
  1. time.sleep()
  • 功能:程序暫停
  • 示例
start = int(time.time())
time.sleep(2)
end = int(time.time())
print(f"停頓{end - start:.2f}秒")

# 輸出:
# 停頓2.00秒

2.1.4 時間轉(zhuǎn)換

  1. 時間戳 -> struct_time
  • 方法:time.localtime()
  • 示例
timestamp = time.time()
ts_to_struct = time.localtime(timestamp)
print(ts_to_struct)

# 輸出:
# time.struct_time(tm_year=2025, tm_mon=7, tm_mday=22, tm_hour=13, tm_min=50, tm_sec=49, tm_wday=1, tm_yday=203, tm_isdst=0)

  1. struct_time -> 時間戳
  • 方法:time.mktime()
  • 示例
struct_time = time.localtime()
struct_to_ts = time.mktime(struct_time)
print(struct_to_ts)

# 輸出:
# 1753163493.0

2.2 random

生成隨機(jī)數(shù)和實現(xiàn)隨機(jī)選擇功能

概覽

方法功能示例
random()[0.0, 1.0) 的隨機(jī)浮點(diǎn)數(shù)0.374501
uniform(a, b)[a, b] 的隨機(jī)浮點(diǎn)數(shù)7.823
randint(a, b)[a, b] 的隨機(jī)整數(shù)4
randrange(start, stop, step)指定范圍的隨機(jī)整數(shù)45
choice(seq)序列中的隨機(jī)元素“green”
choices(population, k)有放回抽樣[‘B’, ‘C’]
sample(population, k)無放回抽樣[3, 1, 5]
shuffle(seq)原地打亂序列[‘K’, ‘A’, ‘J’, ‘Q’]
gauss(mu, sigma)高斯分布隨機(jī)數(shù)0.735
seed(a)初始化隨機(jī)種子固定隨機(jī)序列
getstate() / setstate()保存/恢復(fù)狀態(tài)重現(xiàn)隨機(jī)序列

2.2.1 基本隨機(jī)數(shù)

  1. random.random()
  • 功能:生成 [0.0, 1.0) 之間的隨機(jī)浮點(diǎn)數(shù)。
  • 示例
    import random
    print(random.random())  # 輸出:0.374501(隨機(jī)值)
    

控制小數(shù)位數(shù)

  1. 內(nèi)置函數(shù)/四舍五入
    round(random.random(), 3) # 默認(rèn) 3 位小數(shù)
  2. 格式化
    formatted = f{random.random():.3f} # 默認(rèn) 3 位小數(shù)
  1. random.uniform(a, b)
  • 功能:生成 [a, b] 之間的隨機(jī)浮點(diǎn)數(shù)。
  • 示例
    print(random.uniform(2, 10))  # 輸出:7.342(隨機(jī)浮點(diǎn)數(shù))
    

2.2.2 隨機(jī)整數(shù)

  1. random.randint(a, b)
  • 功能:生成 [a, b] 之間的隨機(jī)整數(shù)(包含兩端)。
  • 示例
    print(random.randint(1, 10))  # 輸出:3
    
  1. random.randrange(start, stop, step)
  • 功能:從 range(start, stop, step) 中隨機(jī)選擇一個整數(shù) [start, stop) 左開右閉
  • 示例
    print(random.randrange(0, 100, 5))  # 輸出:45(0,5,10,...,95 中的隨機(jī)數(shù))
    

2.2.3 序列操作

  1. random.choice(seq)
  • 功能:從非空序列中隨機(jī)選擇一個元素。
  • 示例
    colors = ['red', 'green', 'blue']
    print(random.choice(colors))  # 輸出:'green'(隨機(jī)顏色)
    
  1. random.choices(population, weights=None, k=1)
  • 功能:從序列中有放回地隨機(jī)抽取 k 個元素(可設(shè)置權(quán)重)。
  • 示例
    result = random.choices(['A', 'B', 'C'], weights=[0.2, 0.5, 0.3], k=2)
    print(result)  # 輸出:['B', 'C'](權(quán)重越高越可能被選中)
    
  1. random.sample(population, k)
  • 功能:從序列中無放回地隨機(jī)抽取 k 個唯一元素。
  • 示例
    numbers = [1, 2, 3, 4, 5]
    print(random.sample(numbers, 3))  # 輸出:[3, 1, 5](隨機(jī)不重復(fù)的3個數(shù))
    
  1. random.shuffle(seq)
  • 功能:將序列原地隨機(jī)打亂(修改原序列)。
  • 示例
    cards = ['A', 'K', 'Q', 'J']
    random.shuffle(cards)
    print(cards)  # 輸出:['K', 'A', 'J', 'Q'](順序隨機(jī))
    

2.2.4 概率分布

  1. random.gauss(mu, sigma)
  • 功能:生成高斯分布(正態(tài)分布)的隨機(jī)數(shù),mu 為均值,sigma 為標(biāo)準(zhǔn)差。
  • 示例
    print(random.gauss(0, 1))  # 輸出:0.735(標(biāo)準(zhǔn)正態(tài)分布中的隨機(jī)值)
    
  1. random.expovariate(lambd)
  • 功能:生成指數(shù)分布的隨機(jī)數(shù),lambd 是事件發(fā)生率的倒數(shù)。
  • 用途: 多用于建模隨機(jī)事件之間的時間間隔,尤其適合那些平均間隔已知但具體時間不確定的場景。
  • 示例
    print(random.expovariate(1.0/5))  # 輸出:3.2(模擬平均每5秒發(fā)生一次的事件間隔)
    

2.2.5 隨機(jī)種子

  1. random.seed(a=None)
  • 功能:初始化隨機(jī)數(shù)生成器,相同種子生成相同隨機(jī)序列(用于可重復(fù)性)。
  • 示例
    random.seed(42)  # 固定種子
    print(random.random())  # 輸出:0.6394(每次運(yùn)行結(jié)果相同)
    

2.2.6 狀態(tài)管理

  1. random.getstate()random.setstate(state)
  • 功能:保存/恢復(fù)隨機(jī)數(shù)生成器的內(nèi)部狀態(tài)。
  • 原理: 這是偽隨機(jī)數(shù)生成器的典型行為,用于保證生成的隨機(jī)數(shù)序列具有不可預(yù)測性和多樣性
  • 示例
    state = random.getstate()  # 保存當(dāng)前狀態(tài)
    print(random.random())     # 隨機(jī)數(shù)1
    random.setstate(state)     # 恢復(fù)狀態(tài)
    print(random.random())     # 再次輸出相同的隨機(jī)數(shù)1
    

2.3 os

操作系統(tǒng)交互

概覽

方法功能備注
mkdir()創(chuàng)建單級目錄存在時創(chuàng)建的目錄會報錯
makedirs()創(chuàng)建多級目錄exist_ok = True 已存在創(chuàng)建的目錄不會報錯
rename()重命名
remove()刪除文件
scandir()目錄遍歷
walk()遞歸遍歷目錄
os.path.join()路徑拼接
os.path.dirname() 、os.path.basename()、os.path.splitext()路徑分解
os.path.exists、os.path.isfile()、os.path.isdir()路徑檢查
os.getcwd()獲取當(dāng)前路徑
os.chdir()修改工作目錄
os.environ.get()獲取環(huán)境變量
os.system()執(zhí)行系統(tǒng)命令

2.3.1 文件與目錄操作

  1. 創(chuàng)建目錄
  • 方法os.mkdir() / os.makedirs()
  • 示例
import os
os.mkdir("1") # 創(chuàng)建單級目錄 | 文件已存在會報錯
os.makedirs("test/1", exist_ok=True) # 創(chuàng)建多級目錄,exist_ok=True,當(dāng)文件已存在時不報錯
  1. 文件操作
  • 方法os.rename() / os.remove()
  • 示例
import os
os.rename("old.txt","new.txt") # 重命名
os.remove("test/1.txt") # 刪除文件
  1. 目錄遍歷
  • 方法os.scandir()
  • 示例
import os
for entry in os.scandir("."): # . 遍歷當(dāng)前目錄下的所有 文件 和 子目錄 
	if entry.is_file():
		print("文件:",entry)
# 輸出:
# 文件: <DirEntry '1.py'>

2.3.2 路徑處理

  1. 路徑分解
  • 方法os.path.dirname() | os.path.basename() | os.path.splitext()
  • 示例
import os

path = "/home/user/documents/report.txt"

# 獲取路徑組成部分
dir_path = os.path.dirname(path)  # 目錄路徑: "/home/user/documents"
file_name = os.path.basename(path)  # 完整文件名: "report.txt"
file_root, file_ext = os.path.splitext(file_name)  # 分離主名和擴(kuò)展名: ("report", ".txt")

# 完整路徑拆分
head, tail = os.path.split(path)  # ("/home/user/documents", "report.txt")
  1. 路徑拼接
  • 方法os.path.join()
  • 示例
full_path = os.path.join("dir","subdir","file.txt")
  1. 路徑檢查
  • 方法os.path.exists() | os.path.isfile() | os.path.isdir()
  • 示例
print(os.path.exists("1.txt"))  # 是否存在
print(os.path.isfile("1.txt"))  # 是否是文件
print(os.path.isdir("1.txt"))  # 是否是目錄

# 輸出答案(根據(jù)個人本地要查詢的文件為主)
# True
# True
# False

2.3.3 系統(tǒng)信息與環(huán)境

  1. os.getcwd()
  • 功能:獲取當(dāng)前工作目錄
  • 示例
 cwd = os.getcwd()
  1. os.chdir()
  • 功能:修改工作目錄
  • 示例
 cwd = os.chdir("/new/path")
  1. os.environ.get()
  • 功能:獲取環(huán)境變量
  • 示例
home_dir = os.enciron.get("HOME","default") # 查找 HOME 值,沒有則返回默認(rèn)值 default
print(home_dir)
  1. os.system()
  • 功能:執(zhí)行系統(tǒng)命令
  • 示例
os.system("ls -l")

2.4 sys

系統(tǒng)相關(guān)功能

概覽

方法功能備注
sys.argv獲取命令行參數(shù)
sys.stdout重定向輸出
sys.stdin.readline().strip()讀取標(biāo)準(zhǔn)輸入
sys.version獲取Python版本信息
sys.path獲取模塊搜索路徑
sys.exit(1)退出程序并返回狀態(tài)碼非0狀態(tài)碼表示異常退出
sys.stdout.flush()刷新輸出緩沖區(qū)確保立即顯示

2.4.1 命令行參數(shù)處理

  1. sys.argv
  • 功能:獲取命令行參數(shù)
  • 示例
# 假設(shè)執(zhí)行:python scripts.py arg1 arg2 --option=value
print(sys.argv) # ['script.py', 'arg1', 'arg2', '--option=value']
# 實際應(yīng)用:處理命令行選項
if len()sys.argv) > 1:
	action = sys.argv[1] # arg1
	if action == "start":
		print("")
	elif action == "stop":
		print("")

2.4.2 標(biāo)準(zhǔn)輸入/輸出控制

  1. sys.stdout
  • 功能:重定向輸出
  • 示例
with open('1.txt','w',encoding="utf-8-sig") as f:
	sys.stdout = f # 重定向標(biāo)準(zhǔn)輸出到文件
	print("這條信息將寫入文件")
	sys.stdout = sys._stdout__ # 恢復(fù)標(biāo)準(zhǔn)輸出
# 會將print中的內(nèi)容寫進(jìn) 1.txt文件內(nèi)
  1. sys.stdin.readline().strip()
  • 功能:讀取標(biāo)準(zhǔn)輸入
  • 示例
print("請輸入內(nèi)容:")
user_input = sys.stdin.readline().strip()
print(f"您輸入了:{user_input}")

# 輸出:
"""
請輸入內(nèi)容:
1 2 3 
您輸入了:1 2 3
"""

2.4.3 系統(tǒng)信息與配置

  1. sys.version
  • 功能:獲取Python版本信息
  • 示例
print(sys.version)
# 輸出
"""
3.11.9 (tags/v3.11.9:de54cf5, Apr  2 2024, 10:12:12) [MSC v.1938 64 bit (AMD64)]
"""
  1. sys.path
  • 功能:獲取模塊搜索路徑
  • 示例
print(sys.path) 

# 輸出列表形式,包含Python查找模塊的路徑
  1. sys.platform
  • 功能:獲取操作系統(tǒng)平臺
  • 示例
print(sys.platform) # 'win32', 'linux', 'darwin' (macOS)
# 輸出 
"""
win32
"""

2.4.4 程序流程控制

  1. sys.exit(n)
  • 功能:退出程序并返回狀態(tài)碼(n=0時,正常退出;n=1《或是其它數(shù)字》時表示異常退出)
  • 場景:通常用于腳本或程序中發(fā)生錯誤時提前退出,表示異常終止
  • 示例
if error_occurred:
	sys.exit(1) # 非0狀態(tài)碼表示異常退出
  1. sys.stdout.flush()
print("處理中...", end="")
sys.stdout.flush()
# 執(zhí)行耗時操作...
print("完成!")

2.5 json

JSON 數(shù)據(jù)處理

概覽

方法功能
json.dumps()Python -> JSON字符串
json.loads()JSON字符串 -> Python
json.dump寫入JSON文件
json.load()讀取JSON文件

2.5.1 基本序列化與反序列化

  1. Python -> JSON字符串
  • 方法json.dumps()
  • 示例
import json
data = {
	"name": "Alice",
	"age": 30,
	"hobbies": ["reading"],
	"is_student": False,
}
json_str = json.dumps(data, indent=2)
print(json_str)

# 輸出:
"""
{
  "name": "Alice",
  "age": 30,
  "hobbies": [
    "reading",
    "hiking"
  ],
  "is_student": false
}
"""
  1. JSON字符串 -> Python
  • 方法json.loads()
  • 示例
restored_data = json.loads(json_str)
print(restored_data["name"]) # "Alice"

2.5.2 文件讀寫操作

  1. json.dump()
  • 功能:寫入JSON文件
  • 示例
with open("data.json", "w") as f:
	json.dump(data, f, indent=4) # 控制為 4 縮進(jìn)空格
  1. json.load()
  • 功能:讀取JSON文件
  • 示例
with open("data.json") as f:
	loaded_data = json.load(f)

2.5.3 高級序列化控制

# 處理自定義對象
class User:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        
# 自定義序列化方法
def user_encoder(obj):
    if isinstance(obj, User): # 判斷 obj 是否是 User 的實例
        return {"name": obj.name, "age": obj.age}
    raise TypeError(f"Object of type {obj.__class__.__name__} is not JSON serializable")

user = User("Bob", 40)
user_json = json.dumps(user, default=user_encoder)  # {"name": "Bob", "age": 40}

# 自定義反序列化方法
def user_decoder(dct):
    if "name" in dct and "age" in dct:
        return User(dct["name"], dct["age"])
    return dct

restored_user = json.loads(user_json, object_hook=user_decoder)
print(restored_user.name)  # "Bob"
```

總結(jié) 

到此這篇關(guān)于Python常見模塊及其用法示例詳解的文章就介紹到這了,更多相關(guān)Python常見模塊用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Visual Studio Code搭建django項目的方法步驟

    Visual Studio Code搭建django項目的方法步驟

    這篇文章主要介紹了Visual Studio Code搭建django項目的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Pygame如何使用精靈和碰撞檢測

    Pygame如何使用精靈和碰撞檢測

    本文主要介紹了Pygame如何使用精靈和碰撞檢測,它們能夠幫助我們跟蹤屏幕上移動的大量圖像。我們還會了解如何檢測兩個圖像相互重疊或者碰撞的方法。
    2021-11-11
  • Windows下python3安裝tkinter的問題及解決方法

    Windows下python3安裝tkinter的問題及解決方法

    這篇文章主要介紹了Windows下python3安裝tkinter問題及解決方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • Python?if?判斷語句詳解

    Python?if?判斷語句詳解

    這篇文章主要介紹了Python?if?判斷語句,包括流程控制,順序結(jié)構(gòu)和分支結(jié)構(gòu),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11
  • Python中re模塊:匹配開頭/結(jié)尾(^/$)

    Python中re模塊:匹配開頭/結(jié)尾(^/$)

    本文主要介紹了Python中re模塊:匹配開頭/結(jié)尾(^/$),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Python迷宮生成和迷宮破解算法實例

    Python迷宮生成和迷宮破解算法實例

    今天小編就為大家分享一篇Python迷宮生成和迷宮破解算法實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python爬蟲獲取圖片并下載保存至本地的實例

    Python爬蟲獲取圖片并下載保存至本地的實例

    今天小編就為大家分享一篇Python爬蟲獲取圖片并下載保存至本地的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python基于execjs運(yùn)行js過程解析

    Python基于execjs運(yùn)行js過程解析

    這篇文章主要介紹了Python基于execjs運(yùn)行js過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • python連接sql server亂碼的解決方法

    python連接sql server亂碼的解決方法

    為解決python連接sql server是出現(xiàn)的亂碼,需要在連接sql server 時指定字符集utf8(client charset = UTF-8),python環(huán)境制定了字符集變量(#coding=utf-8 )
    2013-01-01
  • Python3 如何開啟自帶http服務(wù)

    Python3 如何開啟自帶http服務(wù)

    這篇文章主要介紹了Python3 開啟自帶http服務(wù)的操作方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05

最新評論