Maison >développement back-end >Tutoriel Python >J'ai à nouveau sept bibliothèques Python super puissantes
Il y a un proverbe : "Il n'est pas nécessaire de réinventer la roue." Les bibliothèques Python en sont le meilleur exemple. Il vous aide à écrire de manière simple des fonctionnalités complexes et chronophages. Autant que je sache, un bon projet utilise certaines des meilleures bibliothèques.
Nous écrivons une fonction qui convertit un nombre en binaire en renvoyant une liste de bits. @pysnooper.snoop() peut être étudié en ajoutant un décorateur :
import pysnooper @pysnooper.snoop() def number_to_bits(number): if number: bits = [] while number: number, remainder = divmod(number, 2) bits.insert(0, remainder) return bits else: return [0] number_to_bits(6)
Alternativement, si vous ne souhaitez pas tracer l'intégralité de la fonction, vous pouvez envelopper les parties pertinentes dans un bloc with :
import pysnooper import random def foo(): lst = [] for i in range(10): lst.append(random.randrange(1, 1000)) with pysnooper.snoop(): lower = min(lst) upper = max(lst) mid = (lower + upper) / 2 print(lower, mid, upper) foo()
Le résultat est le suivant :
New var:....... i = 9 New var:....... lst = [681, 267, 74, 832, 284, 678, ...] 09:37:35.881721 line10 lower = min(lst) New var:....... lower = 74 09:37:35.882137 line11 upper = max(lst) New var:....... upper = 832 09:37:35.882304 line12 mid = (lower + upper) / 2 74 453.0 832 New var:....... mid = 453.0 09:37:35.882486 line13 print(lower, mid, upper) Elapsed time: 00:00:00.000344
En tant que développeur, la plupart du temps est consacré au débogage. Cette bibliothèque est un débogueur. La plupart des gens utilisent des lignes d'impression à des endroits stratégiques, dont certaines affichent la valeur d'une variable. Cette bibliothèque fait la même chose, sauf qu'au lieu de créer les bonnes lignes d'impression, vous ajoutez simplement une ligne de décorateurs aux fonctions qui vous intéressent. Vous obtiendrez un journal textuel de la fonction, indiquant quelles lignes ont été exécutées, quand et quand les variables locales ont été modifiées. Il compte plus de 15 000 étoiles sur GitHub.
Adresse du projet : https://github.com/cool-RR/PySnooper
Planification des tâches Python humain. Exécutez périodiquement une fonction Python (ou toute autre fonction appelable) en utilisant une syntaxe conviviale.
import schedule import time def job(): print("I'm working...") schedule.every(10).seconds.do(job) schedule.every(10).minutes.do(job) schedule.every().hour.do(job) schedule.every().day.at("10:30").do(job) schedule.every(5).to(10).minutes.do(job) schedule.every().monday.do(job) schedule.every().wednesday.at("13:15").do(job) schedule.every().day.at("12:42", "Europe/Amsterdam").do(job) schedule.every().minute.at(":17").do(job) def job_with_argument(name): print(f"I am {name}") schedule.every(10).seconds.do(job_with_argument, name="Peter") while True: schedule.run_pending() time.sleep(1)
Il s'agit d'une bibliothèque de planification de tâches Python pour les humains. Il vous permet d'exécuter périodiquement une fonction Python (ou tout autre appelable) en utilisant une syntaxe conviviale. Il comprend de nombreuses fonctionnalités telles qu'un planificateur in-process qui fonctionne périodiquement (aucun processus supplémentaire requis), est très léger, n'a pas de dépendances externes, a une bonne couverture de tests, etc. Cette bibliothèque compte plus de 10 000 étoiles sur GitHub.
Adresse du projet : https://github.com/dbader/schedule
"""Example usage of MechanicalSoup to get the results from the Qwant search engine. """ import re import mechanicalsoup import html import urllib.parse # Connect to Qwant browser = mechanicalsoup.StatefulBrowser(user_agent='MechanicalSoup') browser.open("https://lite.qwant.com/") # Fill-in the search form browser.select_form('#search-form') browser["q"] = "MechanicalSoup" browser.submit_selected() # Display the results for link in browser.page.select('.result a'): # Qwant shows redirection links, not the actual URL, so extract # the actual URL from the redirect link: href = link.attrs['href'] m = re.match(r"^/redirect/[^/]*/(.*)$", href) if m: href = urllib.parse.unquote(m.group(1)) print(link.text, '->', href)
Cette bibliothèque vous aidera à réaliser une interaction automatique avec le site Web. Il stocke et envoie automatiquement des cookies, suit les redirections et peut suivre des liens et soumettre des formulaires. Il ne fait pas Javascript. Cette bibliothèque compte plus de 4 000 étoiles sur GitHub.
Adresse du projet : https://github.com/MechanicalSoup/MechanicalSoup
>>> from ftfy import fix_encoding >>> print(fix_encoding("(ง'⌣')ง")) (ง'⌣')ง
Voici quelques exemples de ce que ftfy peut faire (trouvé dans le monde réel) :
ftfy peut corriger mojibake (obscurcissement de l'encodage) en détectant des modèles de caractères qui sont évidemment UTF-8 mais qui sont décodés en d'autres caractères :
>>> import ftfy >>> ftfy.fix_text('✔ No problems') '✔ No problems'
Cela semble-t-il impossible ? Pas vraiment. UTF-8 est un codage bien conçu qui est évident lorsqu'il est utilisé à mauvais escient, et une chaîne de mojibake contient généralement toutes les informations dont nous avons besoin pour récupérer la chaîne d'origine.
ftfy peut corriger plusieurs couches de mojibake en même temps :
>>> ftfy.fix_text('The Mona Lisa doesn’t have eyebrows.') "The Mona Lisa doesn't have eyebrows."
Il peut corriger le mojibake avec des "guillemets bouclés" appliqués ci-dessus, qui ne peuvent pas être décodés en continu avant que les guillemets ne soient développés :
>>> ftfy.fix_text("l’humanité") "l'humanité"
ftfy peut corriger le mojibake contenant des caractères U +A0 (espace insécable) de mojibake, mais U+A0 devient un espace ASCII, qui est ensuite combiné avec un autre espace :
>>> ftfy.fix_text('Ãxa0 perturber la réflexion') 'à perturber la réflexion' >>> ftfy.fix_text('à perturber la réflexion') 'à perturber la réflexion'
ftfy peut également décoder les entités HTML qui apparaissent en dehors du HTML, même lorsque l'entité est mal majuscule :
>>> # by the HTML 5 standard, only 'PÉREZ' is acceptable >>> ftfy.fix_text('PÉREZ') 'PÉREZ'
Ces correctifs ne fonctionneront pas dans tous les cas, car ftfy a pour objectif ferme d'éviter les faux positifs - il ne devrait jamais remplacer le texte correctement décodé par autre chose.
Le texte suivant peut être codé en Windows-1252 et décodé en UTF-8 et sera décodé comme "MARQUɅ". Toutefois, le texte original est clair et ne sera donc pas modifié.
>>> ftfy.fix_text('IL Y MARQUÉ…') 'IL Y MARQUÉ…'
Cette bibliothèque vous aidera à réparer Unicode qui est cassé de diverses manières. Le but de cette bibliothèque est de recevoir un mauvais Unicode et de générer un bon Unicode à utiliser dans votre code compatible Unicode. Il a plus de 3 000 étoiles sur GitHub.
项目地址:https://github.com/rspeer/python-ftfy
这是一个透明的python库,用于对称的远程过程调用、集群和分布式计算。它利用对象代理这一技术,利用python的动态特性,克服进程和计算机之间的物理界限,使远程对象可以像本地一样被操作。这个库在GitHub上有超过1k颗星。
项目地址:https://github.com/tomerfiliba-org/rpyc
pyglet 的一些特性是:
import pyglet window = pyglet.window.Window() label = pyglet.text.Label('Hello, world!', font_size=36, x=window.width // 2, y=window.height // 2, anchor_x='center', anchor_y='center') @window.event def on_draw(): window.clear() label.draw() pyglet.app.run()
这是一个跨平台的Python窗口和多媒体库,用于开发游戏和其他视觉效果丰富的应用程序。它支持窗口化、用户界面事件处理、操纵杆、OpenGL图形、加载图像和视频,以及播放声音和音乐。它可以在Windows、OS X和Linux上运行。它在GitHub上有超过1千颗星。
项目地址:https://github.com/pyglet/pyglet
import rope.base.project myproject = rope.base.project.Project('/path/to/myproject')
这个库提供了强大而安全的重构。它包括轻度依赖性等特点,与PyRight或PyLance不同,它不依赖Node.js,完全由python编写,等等。它在GitHub上有超过1千颗星。
项目地址:https://github.com/python-rope/rope
文档地址:https://rope.readthedocs.io/en/latest/overview.html
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!