目錄
正文
1. difflib
SequenceMatcher
get_close_matches
2. sched
3. binaascii
4. tty
5. weakref
回顾
要点
首頁 後端開發 Python教學 這五個實用但鮮為人知的 Python 模組,你知道麼?

這五個實用但鮮為人知的 Python 模組,你知道麼?

Apr 13, 2023 am 10:01 AM
python 模組

這五個實用但鮮為人知的 Python 模組,你知道麼?

正文

Python 標準函式庫有超過 200 個模組,程式設計師可以在他們的程式中匯入和使用。雖然普通程式設計師對其中許多模組都有一些經驗,但很可能有一些好用的模組他們仍然沒有註意到。

我發現其中許多模組都包含了在各個領域都非常有用的函數。比較資料集、協作其他函數以及音訊處理等都可以只使用 Python 就可以自動完成。

因此,我編制了一份您可能不知道的 Python 模組的候選清單,並對這幾個模組進行了適當的解釋,以便您在將來理解和使用它們。

所有這些模組都有不同的函數和類別。本文包含了幾個鮮為人知的函數和類,因此即使您聽說過這些模組,也可能不知道它們的某些方面和用途。

1. difflib

difflib 是一個專注於比較資料集(尤其是字串)的 Python 模組。為了具體了解,您可以使用此模組完成的幾件事,讓我們檢查一下它的一些最常見的函數。

SequenceMatcher

SequenceMatcher 是一個比較兩個字串並根據它們的相似性傳回資料的函數。透過使用 ratio(),我們將能夠根據比率/百分比來量化這種相似性。

語法:

SequenceMatcher(None, string1, string2)
登入後複製

下面這個簡單的範例展示了該函數的作用:

from difflib import SequenceMatcher

phrase1 = "Tandrew loves Trees."

phrase2 = "Tandrew loves to mount Trees."

similarity = SequenceMatcher(None, phrase1, phrase2)

print(similarity.ratio())

# Output: 0.8163265306122449
登入後複製

get_close_matches

#接下來是get_close_matches,該函數傳回與作為參數傳入的字串最接近的匹配項。

語法:

get_close_matches(word, possibilities, result_limit, min_similarity)
登入後複製

下面解釋一下這些可能有些混亂的參數:

  • word 是函數將要查看的目標單字。
  • possibilities 是一個數組,其中包含函數將要尋找的匹配項並找到最接近的匹配項。
  • result_limit 是傳回結果數量的限制(可選)。
  • min_similarity 是兩個單字需要具有的最小相似度才能被函數視為回傳值(可選)。

以下是它的一個使用範例:

from difflib import get_close_matches
word = 'Tandrew'
possibilities = ['Andrew', 'Teresa', 'Kairu', 'Janderson', 'Drew']
print(get_close_matches(word, possibilities))
# Output: ['Andrew']
登入後複製

#除此之外還有幾個是您可以查看的屬於Difflib 的其他一些方法和類別:unified_diff、Differ和diff_bytes

2. sched

sched 是一個有用的模組,它以跨平台工作的事件調度為中心,與Windows 上的任務調度程序等工具形成鮮明對比。大多數情況下,使用此模組時,都會使用 schedular 類別。

更常見的 time 模組通常與 sched 一起使用,因為它們都處理時間和調度的概念。

建立一個 schedular 實例:

schedular_name = sched.schedular(time.time, time.sleep)
登入後複製

可以從這個實例中呼叫各種方法。

  •  呼叫 run() 時,調度程式中的事件/條目會依照順序被呼叫。在安排完事件後,此函數通常會出現在程式的最後。另外,搜尋公眾號Linux就該這樣學後台回覆“git書籍”,獲取一份驚喜禮包。
  •  enterabs() 是一個函數,它本質上將事件加入調度程式的內部佇列。它會依照下列順序接收幾個參數:
  •  事件執行的時間
  •  活動優先順序
  •  事件本身(一個函數)
  • #  事件函數的參數
  •  事件的關鍵字參數字典

#下面是一個範例,說明如何一起使用這兩個函數:

import sched
import time
def event_notification(event_name):
print(event_name + " has started")
my_schedular = sched.scheduler(time.time, time.sleep)
closing_ceremony = my_schedular.enterabs(time.time(), 1, event_notification, ("The Closing Ceremony", ))
my_schedular.run()
# Output: The Closing Ceremony has started
登入後複製

還有幾個擴充sched 模組用途的函數:cancel()、enter() 和empty()。

3. binaascii

binaascii 是用於在二進位和 ASCII 之間轉換的模組。

b2a_base64 是 binaascii 模組中的一種方法,它將 base64 資料轉換為二進位資料。以下是這個方法的一個例子:

import base64
import binascii
msg = "Tandrew"
encoded = msg.encode('ascii')
base64_msg = base64.b64encode(encoded)
decode = binascii.a2b_base64(base64_msg)
print(decode)
# Output: b'Tandrew'
登入後複製

該段程式碼應該是不言自明的。簡單地說,它涉及編碼、轉換為 base64,以及使用 b2a_base64 方法將其轉換回二進位。

以下是一些屬於 binaascii 模組的函數:a2b_qp()、b2a_qp() 和 a2b_uu()。

4. tty

tty 是一個包含多個實用函數的模組,可用來處理 tty 裝置。以下是它的兩個函數:

  •  setraw() 將其參數 (fd) 中檔案描述子的模式變更為 raw。
  •  setcbreak() 將其參數 (fd) 中的檔案描述子的模式變更為 cbreak。

由於需要使用 termios 模組,因此此模組僅適用於 Unix,例如在上述兩個函數中指定第二個參數(when=termios.TCSAFLUSH)。

5. weakref

weakref 是一個用於在 Python 中建立對物件的弱引用的模組。

弱引用是不保護給定物件不被垃圾回收機制收集的參考。

以下是與該模組相關的兩個函數:

  • getweakrefcount() 接受一个对象作为参数,并返回引用该对象的弱引用的数量。
  • getweakrefs() 接受一个对象并返回一个数组,其中包含引用该对象的所有弱引用。

weakref 及其函数的使用示例:

import weakref
class Book:
def print_type(self):
print("Book")
lotr = Book
num = 1
rcount_lotr = str(weakref.getweakrefcount(lotr))
rcount_num = str(weakref.getweakrefcount(num))
rlist_lotr = str(weakref.getweakrefs(lotr))
rlist_num = str(weakref.getweakrefs(num))
print("number of weakrefs of 'lotr': " + rcount_lotr)
print("number of weakrefs of 'num': " + rcount_num)
print("Weakrefs of 'lotr': " + rlist_lotr)
print("Weakrefs of 'num': " + rlist_num)
# Output:
# number of weakrefs of 'lotr': 1
# number of weakrefs of 'num': 0
# Weakrefs of 'lotr': [<weakref at 0x10b978a90; to 'type' at #0x7fb7755069f0 (Book)>]
# Weakrefs of 'num': []
登入後複製

输出从输出的函数返回值我们可以看到它的作用。由于 num 没有弱引用,因此 getweakrefs() 返回的数组为空。扩展:接私活儿

以下是与 weakref 模块相关的一些其他函数:ref()、proxy() 和 _remove_dead_weakref()。

回顾

  • Difflib 是一个用于比较数据集,尤其是字符串的模块。例如,SequenceMatcher 可以比较两个字符串并根据它们的相似性返回数据。
  • sched 是与 time 模块一起使用的有用工具,用于使用 schedular 实例安排事件(以函数的形式)。例如,enterabs() 将一个事件添加到调度程序的内部队列中,该队列将在调用 run() 函数时运行。

binaascii 可在二进制和 ASCII 之间转换以编码和解码数据。b2a_base64 是 binaascii 模块中的一种方法,它将 base64 数据转换为二进制数据。

tty 模块需要配合使用 termios 模块,并处理 tty 设备。它仅适用于 Unix。

weakref 用于弱引用。它的函数可以返回对象的弱引用,查找对象的弱引用数量等。其中非常使用的函数之一是 getweakrefs(),它接受一个对象并返回一个该对象包含的所有弱引用的数组。

要点

这些函数中的每一个都有其各自的用途,每一个都有不同程度的有用性。了解尽可能多的 Python 函数和模块非常重要,以便保持稳定的工具库,您可以在编写代码时快速使用。

无论您的编程专业知识水平如何,您都应该不断学习。多投入一点时间可以为您带来更多价值,并为您节省更多未来时间。

以上是這五個實用但鮮為人知的 Python 模組,你知道麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1268
29
C# 教程
1248
24
PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Golang vs. Python:性能和可伸縮性 Golang vs. Python:性能和可伸縮性 Apr 19, 2025 am 12:18 AM

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

See all articles