ホームページ >バックエンド開発 >Python チュートリアル >これら 5 つの便利だがあまり知られていない Python モジュールをご存知ですか?

これら 5 つの便利だがあまり知られていない Python モジュールをご存知ですか?

王林
王林転載
2023-04-13 10:01:051191ブラウズ

これら 5 つの便利だがあまり知られていない Python モジュールをご存知ですか?

#本文

Python 標準ライブラリには、プログラマがインポートしてプログラムに使用できる 200 を超えるモジュールがあります。平均的なプログラマは、これらのモジュールの多くを使用した経験があるでしょうが、まだ気づいていない有用なモジュールがいくつかある可能性があります。

これらのモジュールの多くには、さまざまな分野で非常に役立つ関数が含まれていることがわかりました。データセットの比較、他の機能との連携、音声処理はすべて Python だけを使用して自動化できます。

そこで、私はあなたが知らないかもしれない Python モジュールの候補リストを作成し、これらのいくつかのモジュールについて適切な説明を加えて、将来それらを理解して使用できるようにしました。

これらすべてのモジュールには、異なる関数とクラスがあります。この記事には、あまり知られていない関数やクラスがいくつか含まれているため、これらのモジュールについて聞いたことはあっても、その側面や用途の一部は知らないかもしれません。

1. difflib

difflib は、データセット (特に文字列) の比較に焦点を当てた Python モジュールです。このモジュールでできることの具体的なアイデアを得るために、最も一般的な関数のいくつかを調べてみましょう。

SequenceMatcher

SequenceMatcher は、2 つの文字列を比較し、その類似性に基づいてデータを返す関数です。 rate() を使用すると、この類似性を比率/パーセンテージの観点から定量化できます。

構文:

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 は、関数が調べるターゲットの単語です。 。
  • 可能性は、関数が検索して最も近い一致を見つける一致を含む配列です。
  • result_limit は、返される結果の数の制限です (オプション)。
  • min_similarity は、関数による戻り値とみなされるために 2 つの単語が持つ必要のある最小の類似性です (オプション)。
これはその使用例です:

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 のタスク スケジューラなどのツールと連携して、クロスプラットフォームで動作するイベント スケジューリングを中心とした便利なモジュールです。このモジュールを使用する場合、ほとんどの場合、スケジュール クラスを使用します。

より一般的な time モジュールは、どちらも時間とスケジュールの概念を扱うため、通常は sched と一緒に使用されます。

スケジュール インスタンスの作成:

schedular_name = sched.schedular(time.time, time.sleep)

このインスタンスからさまざまなメソッドを呼び出すことができます。

    run() が呼び出されると、スケジューラ内のイベント/エントリが順番に呼び出されます。この機能は通常、イベントがスケジュールされた後、プログラムの最後に表示されます。さらに、パブリック アカウント Linux を検索し、バックグラウンドで「git Books」と返信すると、サプライズのギフト パッケージがプレゼントされます。
  • enterabs() は基本的に、スケジューラの内部キューにイベントを追加する関数です。いくつかのパラメータを次の順序で受け取ります。
    イベントが実行される時刻
  • アクティビティの優先度
  • イベント自体 ( function)
  • イベント関数のパラメータ
  • イベントのキーワード パラメータのディクショナリ
  • #これら 2 つの関数を一緒に使用する方法の例を次に示します:

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 は、base64 データをバイナリ データに変換する binaascii モジュールのメソッドです。このアプローチの例を次に示します。

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 デバイスの処理に使用できるいくつかのユーティリティ関数を含むモジュールです。以下にその 2 つの関数を示します。

setraw() は、引数 (fd) 内のファイル記述子のモードを raw に変更します。
  • setcbreak() は、引数 (fd) 内のファイル記述子のモードを cbreak に変更します。
  • このモジュールは、上記の 2 つの関数で 2 番目のパラメーター (when=termios.TCSAFLUSH) を指定するなど、termios モジュールを使用する必要があるため、Unix でのみ使用できます。

5.weakref

weakref は、Python でオブジェクトへの弱参照を作成するためのモジュールです。

弱い参照とは、ガベージ コレクション メカニズムによる収集から特定のオブジェクトを保護しない参照です。

このモジュールに関連する 2 つの関数を次に示します:

  • 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 函数和模块非常重要,以便保持稳定的工具库,您可以在编写代码时快速使用。

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

以上がこれら 5 つの便利だがあまり知られていない Python モジュールをご存知ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。