【學Python自動化】 11 標準庫簡介 —— 第二部分

一、格式化輸出

reprlib 模塊

  • 提供定制版 repr(),縮略顯示大型或深層嵌套對象

import reprlib
reprlib.repr(set('supercalifragilisticexpialidocious'))
# "{'a', 'c', 'd', 'e', 'f', 'g', ...}"

pprint 模塊

  • 美化輸出,添加換行和縮進顯示復雜數據結構

import pprint
t = [[[['black', 'cyan'], 'white', ['green', 'red']], [['magenta', 'yellow'], 'blue']]]
pprint.pprint(t, width=30)

textwrap 模塊

  • 格式化文本段落適應屏幕寬度

import textwrap
doc = """長文本..."""
print(textwrap.fill(doc, width=40))

locale 模塊

  • 處理地域文化相關的數據格式

import locale
locale.setlocale(locale.LC_ALL, 'English_United States.1252')
x = 1234567.8
locale.format_string("%d", x, grouping=True)  # '1,234,567'

二、模板

string.Template 類

  • 簡化模板語法,支持占位符替換

from string import Template
t = Template('${village}folk send $$10 to $cause.')
t.substitute(village='Nottingham', cause='ditch fund')
  • safe_substitute():缺失數據時保留原占位符

t.safe_substitute(d)  # 不會拋出KeyError
  • 自定義分隔符:創建Template子類

class BatchRename(Template):delimiter = '%'

三、使用二進制數據記錄格式

struct 模塊

  • 處理不定長度的二進制記錄格式

import struct
with open('myfile.zip', 'rb') as f:data = f.read()
fields = struct.unpack('<IIIHH', data[start:start+16])
# 小端字節序,無符號整數

四、多線程

threading 模塊

  • 實現后臺任務運行

import threading, zipfileclass AsyncZip(threading.Thread):def run(self):# 壓縮操作print('Finished background zip')background = AsyncZip('mydata.txt', 'myarchive.zip')
background.start()
background.join()  # 等待線程結束
  • 同步原語:線程鎖、事件、條件變量、信號量

  • 推薦使用 queue:集中資源請求,更易設計

五、日志記錄

logging 模塊

  • 靈活的日志記錄系統

import logging
logging.debug('Debug info')
logging.info('Info message')
logging.warning('Warning: %s not found', 'server.conf')
logging.error('Error occurred')
logging.critical('Critical error')
  • 日志級別:DEBUG, INFO, WARNING, ERROR, CRITICAL

  • 輸出選項:文件、郵件、套接字、HTTP服務器等

六、弱引用

weakref 模塊

  • 跟蹤對象而不創建永久引用

import weakref, gcclass A:def __init__(self, value):self.value = valuea = A(10)
d = weakref.WeakValueDictionary()
d['primary'] = a  # 不創建強引用
del a
gc.collect()
d['primary']  # KeyError: 對象已被回收

七、用于操作列表的工具

array 模塊

  • 類型一致、存儲密度高的數組

from array import array
a = array('H', [4000, 10, 700, 22222])  # 雙字節無符號整數
sum(a)  # 26932

collections.deque

  • 高效的雙端隊列

from collections import deque
d = deque(["task1", "task2", "task3"])
d.append("task4")
d.popleft()  # "task1"

bisect 模塊

  • 操作有序列表

import bisect
scores = [(100, 'perl'), (200, 'tcl'), (400, 'lua')]
bisect.insort(scores, (300, 'ruby'))

heapq 模塊

  • 堆隊列算法

from heapq import heapify, heappop, heappush
data = [1, 3, 5, 7, 9, 2, 4, 6, 8, 0]
heapify(data)
heappush(data, -5)
[heappop(data) for i in range(3)]  # [-5, 0, 1]

八、十進制浮點運算

decimal 模塊

  • 精確的十進制浮點運算

from decimal import *
round(Decimal('0.70') * Decimal('1.05'), 2)  # Decimal('0.74')
round(.70 * 1.05, 2)  # 0.73(二進制浮點不精確)
  • 適用場景:

    • 財務應用

    • 需要精確十進制表示

    • 控制精度和四舍五入

    • 跟蹤有效小數位

    • 精確性優勢:


Decimal('1.00') % Decimal('.10')  # Decimal('0.00')
sum([Decimal('0.1')]*10) == Decimal('1.0')  # True
  • 精度控制:

getcontext().prec = 36  # 設置精度
Decimal(1) / Decimal(7)  # 36位小數

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

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

相關文章

【Kubernetes】知識點2

15. 什么是Pod的根容器&#xff1f;答&#xff1a;Pod 的根容器是每個 Pod 中默認存在的一個特殊容器pause容器&#xff0c;有時也稱為infra容器&#xff0c;它是Pod 啟動時創建的第一個容器&#xff0c;也是整個 Pod中所有容器的 “父容器”。其核心作用是為 Pod 內的所有容器…

視頻增強AI哪個效果好?實戰對比幫你找到最適合的工具

hitpaw 牛小影hitpaw 牛小影在處理低質量視頻時&#xff0c;我們經常會遇到畫面模糊、噪點過多、分辨率不足等問題&#xff0c;比如老舊視頻資料修復、監控錄像清晰化、手機拍攝視頻畫質提升等。這時候&#xff0c;一款好用的視頻增強AI軟件就成了剛需。下面就為大家盤點幾款效…

C#工作流示例(WorkflowCore)

using Microsoft.Extensions.DependencyInjection; using WorkflowCore.Interface; using WorkflowCore.Models;namespace LeaveRequestWorkflow {// 請假申請單public class LeaveBill{/// <summary>/// 申請人/// </summary>public string EmployeeName { get; s…

兩個子進程之間使用命名pipe

兩個子進程間可以使用命名管道&#xff0c;非常簡單。管道如果文件一樣存在硬盤中&#xff0c;使用ls可以查看&#xff0c;管道文件0字節。使用fork函數分別創建兩個子進程。 一個負責讀數據&#xff0c;一個負責寫數據。 #define _GNU_SOURCE #include <stdio.h> #inclu…

第一講、Kafka 初識與環境搭建

一、Kafka 是什么&#xff1f; Apache Kafka 是一個分布式的消息隊列&#xff08;Message Queue&#xff09;與流處理平臺。 它最早由 LinkedIn 開發&#xff0c;后來捐贈給 Apache 基金會&#xff0c;現已廣泛應用于日志收集、實時數據管道和大數據處理。 Kafka 的特點&…

Conda相關的用法

1、背景 此文主要記錄conda的一些用法&#xff0c;大部分命令來自ai搜索以及自己的理解。 2、安裝conda 2.1 選擇 conda 版本 2.1.1 Anaconda 含有 Conda 大量科學計算包&#xff08;NumPy、Pandas、Matplotlib 等&#xff09;適合數據科學、機器學習初學者下載地址&…

數據庫選擇有講究?SQLite、PostgreSQL還是MySQL?

不同規模的項目&#xff0c;數據庫選擇有講究。大家好&#xff0c;我是技術支持彼得&#xff0c;每天兩眼一睜就是為客戶解決問題。在日常使用我們的視頻平臺時&#xff0c;很多用戶會問到數據庫選擇的問題。今天就來詳細說說EasyGBS、EasyNVR和EasyCVR三大平臺該如何選擇數據庫…

在VMware的Win10虛擬機中安裝使用ENSP

VMware安裝Windows10 安裝ENSP及相關軟件 把安裝ENSP所使用的相關復制到已安裝好的Windows10虛擬機中&#xff0c;如下圖所示。 安裝VirtualBox 安裝時請確保路徑為英文目錄&#xff0c;并在出現"安裝設備軟件"或"Oracle USB設備"提示時選擇安裝選項。具…

Go 語言面試題詳解之接口 (Interface) 詳解一文吃透

自古流傳著一個傳言...在 Go 語言面試的時候必有人會問接口&#xff08;interface&#xff09;的實現原理。這又是為什么&#xff1f;為何對接口如此執著&#xff1f;實際上&#xff0c;Go 語言的接口設計在整體扮演著非常重要的角色&#xff0c;沒有他&#xff0c;很多程序估計…

ansible循環+判斷(with,loop,when,if,for)

一、文檔核心定位 本文檔聚焦Ansible自動化運維中的兩大核心功能——循環與判斷&#xff0c;通過“功能說明完整Playbook代碼”的形式&#xff0c;覆蓋循環迭代場景&#xff08;列表、字典、文件等&#xff09;、數據處理過濾器&#xff08;字符串、數字、加密等&#xff09;、…

在linux下使用MySQL常用的命令集合

1. 數據庫查看和選擇-- 查看所有數據庫 SHOW DATABASES;-- 選擇使用某個數據庫&#xff08;需要修改&#xff1a;your_database_name&#xff09; USE your_database_name;-- 查看當前正在使用的數據庫 SELECT DATABASE();說明&#xff1a;your_database_name 替換為你要操作的…

mysy2使用

參考鏈接 https://blog.csdn.net/qq_36525177/article/details/115279468 介紹 要把linux程序在windows上編譯&#xff0c;且最好兼容posix標準&#xff0c;就用msys2。 使用 1、先下載安裝&#xff0c;我裝在D:\mysy2 2、打開vscode&#xff0c;不要切換目錄&#xff0c;…

【Protues仿真】基于AT89C52單片機的溫濕度測量

目錄 0案例視頻效果展示 1DHT11溫度濕度傳感器 1.1傳感器簡介 1.2引腳定義&#xff08;從左到右&#xff0c;面對網格面&#xff09; 1.3時序 & 校驗&#xff08;原理速覽&#xff09; 1.4常見故障排查 2 DHT11溫度濕度傳感器數據 2.1 DHT11溫度濕度傳感器數據格式…

JavaScript箭頭函數與普通函數:兩種工作方式的深度解析

文章目錄JavaScript箭頭函數與普通函數&#xff1a;兩種"工作方式"的深度解析 &#x1f3f9;&#x1f19a;&#x1f468;&#x1f4bc;引言&#xff1a;為什么需要箭頭函數&#xff1f;核心區別全景圖對比表格&#xff1a;箭頭函數 vs 普通函數關系示意圖一、this綁定…

藍光三維掃描技術賦能內衣胸墊設計:從精準制造到個性化體驗的革新之旅

在競爭激烈的內衣市場中&#xff0c;產品設計的精準性、舒適度和個性化已成為品牌制勝的關鍵。傳統內衣設計依賴主觀經驗與樣品反復調整&#xff0c;不僅周期長、成本高&#xff0c;且難以實現對復雜胸型的精準適配。為應對這一挑戰&#xff0c;某知名內衣品牌采用新拓三維XTOM…

內存保護單元MPU

一、介紹內存保護單元 是一種硬件模塊&#xff0c;通常集成在處理器內核中&#xff0c;用于管理和管理對內存的訪問&#xff0c;以提高系統的可靠性和安全性。它的核心任務是保護。想象一下&#xff0c;一個操作系統中有多個任務在運行&#xff1a;* 任務A的代碼 bug 可能會錯誤…

【Kubernetes知識點】監控升級,備份及Kustomize管理

目錄 1.舉例說明K8s中都有哪些常規的維護管理操作。 2.如何升級K8s到新的版本&#xff1f;在升級過程中應該注意哪些事項&#xff1f; 3.解釋ETCD及其備份和恢復的過程。 4.Kustomization在Kubernetes中的作用 1.舉例說明K8s中都有哪些常規的維護管理操作。 集群狀態監控…

《Effective Java》第4條:通過私有構造器強化不可實例化的能力

說明&#xff1a; 關于本博客使用的書籍&#xff0c;源代碼Gitee倉庫 和 其他的相關問題&#xff0c;請查看本專欄置頂文章&#xff1a;《Effective Java》第0條&#xff1a;寫在前面&#xff0c;用一年時間來深度解讀《Effective Java》這本書 正文&#xff1a; 原文P15&am…

20.Linux進程信號(一)

信號: 產生->保存->處理一、預備知識信號vs信號量->沒有任何關系什么叫做信號&#xff1f;中斷我們正在做的事情&#xff0c;是一種事件的異步通知機制。同步和異步理解&#xff1a;同步指事件發生具有一定的順序性&#xff08;如命名管道中服務端讀方式打開會阻塞&am…

【C++】Vector核心實現:類設計到迭代器陷阱

vector 模擬實現代碼的核心下面從類設計、核心接口、內存安全、常見陷阱、測試場景5 個維度&#xff0c;提煉需重點掌握的知識點&#xff0c;覆蓋面試高頻考點與實踐易錯點&#xff1a;一、類結構與成員變量&#xff08;基礎框架&#xff09;vector 的核心是通過三個迭代器&…