Maison  >  Article  >  développement back-end  >  Connaissez-vous ces cinq modules Python utiles mais peu connus ?

Connaissez-vous ces cinq modules Python utiles mais peu connus ?

王林
王林avant
2023-04-13 10:01:051182parcourir

Connaissez-vous ces cinq modules Python utiles mais peu connus ?

Texte

La bibliothèque standard Python contient plus de 200 modules que les programmeurs peuvent importer et utiliser dans leurs programmes. Bien que le programmeur moyen ait une certaine expérience avec bon nombre de ces modules, il est probable qu'il en connaisse encore quelques-uns utiles.

J'ai trouvé que beaucoup de ces modules contiennent des fonctions très utiles dans divers domaines. La comparaison d'ensembles de données, la collaboration avec d'autres fonctions et le traitement audio peuvent tous être automatisés en utilisant uniquement Python.

J'ai donc compilé une courte liste de modules Python que vous ne connaissez peut-être pas et j'ai donné une explication appropriée à ces quelques modules afin que vous puissiez les comprendre et les utiliser à l'avenir.

Tous ces modules ont des fonctions et des classes différentes. Cet article contient plusieurs fonctions et classes moins connues, donc même si vous avez entendu parler de ces modules, vous ne connaissez peut-être pas certains de leurs aspects et utilisations.

1. difflib

difflib est un module Python axé sur la comparaison d'ensembles de données (en particulier de chaînes). Pour avoir une idée concrète de quelques choses que vous pouvez faire avec ce module, examinons certaines de ses fonctions les plus courantes.

SequenceMatcher

SequenceMatcher est une fonction qui compare deux chaînes et renvoie des données en fonction de leur similarité. En utilisant ratio() nous pourrons quantifier cette similarité en termes de ratio/pourcentage.

Syntaxe :

SequenceMatcher(None, string1, string2)

L'exemple simple suivant montre ce que fait cette fonction :

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

Next est get_close_matches, qui renvoie la correspondance la plus proche de la chaîne passée en paramètre.

Syntaxe :

get_close_matches(word, possibilities, result_limit, min_similarity)

Voici une explication de ces paramètres potentiellement déroutants :

  • word est le mot cible que la fonction examinera.
  • possibilités est un tableau contenant les correspondances que la fonction recherchera et trouvera la correspondance la plus proche.
  • result_limit est la limite du nombre de résultats renvoyés (facultatif).
  • min_similarity est la similarité minimale que deux mots doivent avoir pour être considérés comme une valeur de retour par la fonction (facultatif).

Voici un exemple de son utilisation :

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

En plus de cela, il existe quelques autres méthodes et classes appartenant à Difflib que vous pouvez consulter : unified_diff, Differ et diff_bytes

2 sched

sched. est un module utile centré sur la planification d'événements pour le travail multiplateforme, contrairement à des outils tels que le Planificateur de tâches sous Windows. La plupart du temps, lorsque vous utiliserez ce module, vous utiliserez la classe schedular.

Le module de temps le plus courant est généralement utilisé avec sched car ils traitent tous deux des concepts de temps et de planification.

Créez une instance planifiée :

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

Différentes méthodes peuvent être appelées à partir de cette instance.

  • Lorsque run() est appelé, les événements/entrées du planificateur seront appelés dans l'ordre. Cette fonction apparaît généralement à la fin du programme une fois l'événement programmé. De plus, recherchez le compte public Linux et répondez « git books » en arrière-plan pour obtenir un coffret cadeau surprise.
  • enterabs() est une fonction qui ajoute essentiellement des événements à la file d'attente interne du planificateur. Il reçoit plusieurs paramètres dans l'ordre suivant :
  • Heure d'exécution de l'événement
  • Priorité de l'activité
  • L'événement lui-même (une fonction)
  • Paramètres de la fonction événement
  • Dictionnaire des paramètres de mots clés de l'événement

En voici un Exemple d'utilisation de ces deux fonctions ensemble :

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

Il existe également plusieurs fonctions qui étendent l'utilisation du module sched : Cancel(), Enter() et Empty().

3. binaascii

binaascii est un module de conversion entre binaire et ASCII.

b2a_base64 est une méthode du module binaascii qui convertit les données base64 en données binaires. Voici un exemple de cette approche :

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'

Ce morceau de code devrait être explicite. En termes simples, cela implique l'encodage, la conversion en base64 et la reconversion en binaire à l'aide de la méthode b2a_base64.

Voici quelques autres fonctions appartenant au module binaascii : a2b_qp(), b2a_qp() et a2b_uu().

4. tty

tty est un module contenant plusieurs fonctions utilitaires qui peuvent être utilisées pour gérer les appareils tty. Voici ses deux fonctions :

  • setraw() change le mode du descripteur de fichier dans son argument (fd) en raw.
  • setcbreak() change le mode du descripteur de fichier dans son argument (fd) en cbreak.

Ce module n'est disponible que sous Unix en raison de la nécessité d'utiliser le module termios, par exemple en spécifiant le deuxième paramètre (when=termios.TCSAFLUSH) dans les deux fonctions ci-dessus.

5.weakref

weakref est un module permettant de créer des références faibles à des objets en Python.

Une référence faible est une référence qui ne protège pas un objet donné contre la collecte par le mécanisme de garbage collection.

Voici deux fonctions liées à ce module :

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

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer