成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

你應該知道的七個“無用的”Python標準庫函數

譯文 精選
開發 后端
本文將探討其中部分函數,這些函數在一些人眼中是“無用的”,實則不然。它們具備一些獨特而奇異的功能,初遇時可能會讓人疑惑“誰會需要這些功能”,但在實際開發中,某一天你或許就會發現,它們恰好能夠解決你所面臨的特定問題。

譯者 | 晶顏

審校 | 重樓

一些奇特的Python函數初看似乎毫無意義,但當真正了解其用途后,便會發現它們極具價值。

長期使用Python,想必對其極為龐大的標準庫并不陌生,該標準庫極大地提升了開發的效率與便捷性。諸如json、datetime和re等熱門模塊備受開發者關注,但其中還有一些鮮為人知的函數卻常常被忽視。

本文將探討其中部分函數,這些函數在一些人眼中是“無用的”,實則不然。它們具備一些獨特而奇異的功能,初遇時可能會讓人疑惑誰會需要這些功能,但在實際開發中,某一天或許就會發現,它們恰好能夠解決所面臨的特定問題。

接下來,讓我們一同深入了解這些實用性極強的函數。

1.textwrap.dedent()-整理繁雜的多行字符串

在使用Python編寫多行字符串時,是否曾因縮進問題而感到困擾若有,textwrap.dedent函數將是的得力助手。

以下是使用textwrap模塊的代碼示例,該函數能夠去除源代碼中縮進的多行字符串的額外縮進,從而得到無前導空格的整潔文本:

import textwrap

def my_function():
 # Without dedent, this would preserve all the leading spaces
 description = textwrap.dedent("""
 This is a multi-line string
 that will have consistent indentation
 regardless of how it's indented in the code.
 Pretty neat, right?
 """).strip()

 return description

print(my_function())

輸出結果:

這是一個多行字符串,無論它在代碼中如何縮進,都將具有一致的縮進。很簡潔,對吧?

2.difflib.get_close_matches()-輕松實現模糊字符串匹配

在實際開發中,有時需要找出字符串之間的相似之處,或者實現“你的意思是什么?”之類的功能,此時就可以用到difflib模塊中的get_close_matches函數。

以下是幾個使用該函數的示例:

import difflib
words = ["python", "javascript", "typescript", "ruby", "golang"]
search = "pythn"

matches = difflib.get_close_matches(search, words, n=3, cutoff=0.6)
print(f"Did you mean: {matches}")

輸出結果:

的意思是:

['python']
search = "typescript"
matches = difflib.get_close_matches(search, words)
print(f"Matches: {matches}")

輸出結果:

['typescript', 'javascript']

上述第一個示例在編程語言列表中查找與python最接近的匹配項;第二個示例則展示了與typescript接近的匹配結果,包括typescriptjavascript

該函數在開發命令行工具、搜索功能,或任何需要處理拼寫錯誤及近似匹配的場景中,都具有重要的應用價值。

3.uuid.uuid4()-生成確保唯一的ID

當需要唯一標識符,且無需借助數據庫,同時也不必擔心標識符沖突時,可使用uuid模塊中的函數。

通過調用uuid.uuid4()函數能夠創建一個隨機的UUID對象,該對象可用作唯一標識符,示例如下:

import uuid

# Generate a random UUID
random_id = uuid.uuid4()
print(f"Unique ID: {random_id}")

輸出結果:

唯一ID: fc4c6638-9707-437b-83a1-76206b5f7191

下面的示例展示了如何將UUID應用于文件名,以確保文件名的唯一性:

# Use as string for filenames, database keys, etc.
filename = f"document-{uuid.uuid4()}.pdf"
print(filename)

輸出結果:

文檔- b5ccbe7a fad9 - 4611 - 8163 - be1015c634b9.pdf

UUID(通用唯一標識符)具備極高的唯一性保障,即便在不同機器、不同時間生成,也不會出現重復情況。這一特性使其非常適用于為文件、數據庫條目,以及其他任何對唯一性有要求的場景生成ID。

4.shutil.get_terminal_size()-響應式CLI應用程序

如果期望命令行應用程序能夠適配用戶終端的尺寸,shutil.get_terminal_size函數能夠輕松達成這一目標。使用方式如下:

import shutil

columns, rows = shutil.get_terminal_size()
print(f"Your terminal is {columns} columns wide and {rows} rows tall")

# Create a horizontal divider that fits perfectly
print("-" * columns)

上述代碼可獲取當前終端的列數與行數,并據此創建一個寬度恰好與終端寬度一致的水平分隔符。例如,若終端為80列寬、24行高,則會輸出相應尺寸信息,并生成80個-組成的水平分隔符。

5.itertools.groupby()-無需字典即可高效分組數據

當需要依據特定鍵對數據進行分組時,itertools.groupby()函數提供了高效的解決方案。

以員工數據分組為例,需先按部門對員工列表進行排序(這是groupby函數正常工作的必要前提),隨后便可按部門進行分組并輸出結果:

from itertools import groupby
from operator import itemgetter

# Sample data: (name, department)
employees = [
 ("Alice", "Engineering"),
 ("Bob", "Marketing"),
 ("Charlie", "Engineering"),
 ("Diana", "HR"),
 ("Evan", "Marketing"),
]

# Sort by department first (groupby works on consecutive items)
employees.sort(key=itemgetter(1))

# Group by department
for department, group in groupby(employees, key=itemgetter(1)):
 print(f"\n{department} Department:")
 for name, _ in group:
 print(f" - {name}")

輸出結果:

工程部

——愛麗絲

——查理

人力資源部

——戴安娜

市場部

——鮑勃

——埃文

6.collections.ChainMap-無開銷地合并字典

在需要對多個字典進行搜索操作時,collections模塊中的ChainMap類能夠讓用戶按順序查看字典內容,而無需實際進行字典合并。

注意:盡管它并非函數,但依然是Python標準庫中極具實用價值的類。

以下為實際應用示例:

from collections import ChainMap

defaults = {"theme": "dark", "language": "en", "timeout": 30}
user_settings = {"theme": "light"}
session_settings = {"timeout": 60}

# Create a combined view of all settings
settings = ChainMap(session_settings, user_settings, defaults)

print(settings["theme"])
print(settings["language"])
print(settings["timeout"])

上述代碼創建一個包含多個字典的視圖,該視圖會按順序查找所需的值,無需合并字典,從而實現對不同來源設置的優先級排序展示

輸出結果:

light
en
60

7.os.path.commonpath()-查找共享目錄路徑

當需要找出多個文件路徑之間的公共目錄時,os模塊中的path.commonpath函數可滿足這一需求。通過該函數,能夠從文件路徑列表中識別出最長的公共目錄路徑,用于確定一組文件的基礎目錄。具體操作如下:

import os.path

paths = [
 "/home/user/documents/work/report.pdf",
 "/home/user/documents/personal/taxes.xlsx",
 "/home/user/documents/work/presentation.pptx"
]

common = os.path.commonpath(paths)
print(f"Common directory: {common}")

輸出結果:

公共目錄:/home/user/documents

綜上所述,os.path.commonpath()函數在諸如查找一組文件的公共根目錄、構建相對路徑等實際任務中,展現出極高的便捷性與實用性。

結語

通過上述示例不難發現,Python標準庫中存在諸多功能獨特的函數。盡管這些函數在日常編程中使用頻率相對較低,但針對特定場景與問題,它們能夠提供簡潔、高效且優雅的解決方案,充分彰顯了Python標準庫的豐富性與強大功能。

在編程實踐過程中,當開發者著手編寫復雜函數以解決看似常見的問題,不妨先深入查閱Python標準庫。或許其中已存在現成的解決方案,如此不僅能夠節省開發時間,還能提升代碼的質量與規范性。

此外,Python標準庫中還有許多鮮為人知卻極具價值的函數,值得大家去挖掘。

原文標題:7 “Useless” Python Standard Library Functions You Should Know作者:Bala Priya C

責任編輯:姜華 來源: 51CTO
相關推薦

2022-11-02 12:46:14

數據中心

2022-07-28 08:50:14

Linux系統

2023-11-17 14:18:48

開發編程

2016-03-04 10:18:24

xcode技巧開發

2016-03-04 10:25:50

Xcode技巧開發

2023-03-19 16:02:33

JavaScrip技巧編程語言

2021-12-07 10:31:33

CIOIT董事會

2023-11-27 15:49:55

軟件開發系統設計

2023-04-09 23:37:31

JavaScript開發

2022-12-12 13:19:11

Vue3開發技巧

2023-11-06 11:32:46

CSS選擇器作用域

2016-10-12 16:34:37

Linux操作系統

2022-12-30 11:04:23

科技人工智能

2025-03-20 07:09:52

2023-01-10 09:24:47

Python編程語言

2022-03-22 18:12:26

網絡攻擊數據安全安全威脅

2021-06-07 12:40:34

Python代碼陷阱

2021-08-17 10:08:44

HTML網站網絡

2022-05-18 09:01:31

JavaScriptEvalErrorURIError

2017-04-13 10:58:32

Python開發者
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91国内产香蕉| 人妖videosex高潮另类 | 91精品国产91久久久久久最新 | 视频在线亚洲 | 国产精品久久久久久中文字 | 日韩电影免费在线观看中文字幕 | 国产欧美二区 | 天堂成人国产精品一区 | 亚洲一区二区免费 | 成年视频在线观看福利资源 | 亚洲精品3 | 毛片大全| 亚洲精品一区二区网址 | 阿v视频在线观看 | 国产黄色大片 | 亚洲综合视频一区 | 成人三级视频 | 99精品99| 91精品一区 | 国产精品综合 | 久久国产美女视频 | 国产黄色网址在线观看 | 欧美日韩一区二区在线观看 | 91视频官网| 日韩一区二区三区视频在线观看 | 国产91久久久久 | 特级特黄特色的免费大片 | 国产欧美日韩在线一区 | 欧美日韩一区二区视频在线观看 | 欧美午夜精品理论片a级按摩 | 久久99久久99久久 | 狠狠入ady亚洲精品经典电影 | 亚洲在线一区 | 久久亚洲一区 | 成人婷婷| 在线看免费 | 久久一区精品 | 一区视频在线 | 毛片韩国 | 久久久九九 | 国产精品一区二区三区久久久 |