Heim > Artikel > Backend-Entwicklung > Ich habe wieder sieben superleistungsfähige Python-Bibliotheken
Es gibt ein Sprichwort: „Man muss das Rad nicht neu erfinden.“ Python-Bibliotheken sind das beste Beispiel dafür. Es hilft Ihnen, komplexe und zeitaufwändige Funktionen auf einfache Weise zu schreiben. Soweit ich weiß, verwendet ein gutes Projekt einige der besten Bibliotheken.
Wir schreiben eine Funktion, die eine Zahl in eine Binärzahl umwandelt, indem sie eine Liste von Bits zurückgibt. @pysnooper.snoop() kann durch Hinzufügen eines Dekorators untersucht werden:
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)
Wenn Sie nicht die gesamte Funktion verfolgen möchten, können Sie alternativ die relevanten Teile in einen with-Block einschließen:
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()
Die Ausgabe ist wie folgt :
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
Als Entwickler verbringe ich die meiste Zeit mit dem Debuggen. Diese Bibliothek ist ein Debugger. Die meisten Menschen verwenden Druckzeilen an strategischen Stellen, von denen einige den Wert einer Variablen anzeigen. Diese Bibliothek macht das Gleiche, außer dass Sie, anstatt die richtigen Druckzeilen zu erstellen, einfach eine Reihe von Dekoratoren zu den Funktionen hinzufügen, an denen Sie interessiert sind. Sie erhalten ein wörtliches Protokoll der Funktion, einschließlich der Zeilen, die wann ausgeführt wurden und wann lokale Variablen geändert wurden. Es hat über 15.000 Sterne auf GitHub.
Projektadresse: https://github.com/cool-RR/PySnooper
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)
3. MechanicalSoup
"""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)
4. ftfy
>>> from ftfy import fix_encoding >>> print(fix_encoding("(ง'⌣')ง")) (ง'⌣')ง
ftfy kann Mojibake (Kodierungsverschleierung) beheben, indem es Zeichenmuster erkennt, die offensichtlich UTF-8 sind, aber in andere Zeichen dekodiert werden:
>>> import ftfy >>> ftfy.fix_text('✔ No problems') '✔ No problems'
Klingt das unmöglich? Nicht wirklich. UTF-8 ist eine gut gestaltete Codierung, die bei Missbrauch offensichtlich ist, und eine Zeichenfolge von Mojibake enthält normalerweise alle Informationen, die wir benötigen, um die ursprüngliche Zeichenfolge wiederherzustellen.
ftfy kann mehrere Ebenen von Mojibake gleichzeitig reparieren:
>>> ftfy.fix_text('The Mona Lisa doesn’t have eyebrows.') "The Mona Lisa doesn't have eyebrows."
Es kann Mojibake mit den oben angewendeten „geschweiften Anführungszeichen“ reparieren, die nicht kontinuierlich dekodiert werden können, bevor die Anführungszeichen erweitert werden:
>>> ftfy.fix_text("l’humanité") "l'humanité"
ftfy kann Mojibake reparieren, das die Zeichen U enthält +A0 (geschütztes Leerzeichen) von Mojibake, aber U+A0 wird zu einem ASCII-Leerzeichen, das dann mit einem anderen Leerzeichen kombiniert wird:
>>> ftfy.fix_text('Ãxa0 perturber la réflexion') 'à perturber la réflexion' >>> ftfy.fix_text('à perturber la réflexion') 'à perturber la réflexion'
ftfy kann auch HTML-Entitäten dekodieren, die außerhalb von HTML erscheinen, selbst wenn die Entität falsch großgeschrieben wird :
>>> # by the HTML 5 standard, only 'PÉREZ' is acceptable >>> ftfy.fix_text('PÉREZ') 'PÉREZ'
Diese Korrekturen werden nicht in allen Fällen funktionieren, da ftfy das feste Ziel hat, Fehlalarme zu vermeiden – es sollte niemals korrekt dekodierten Text in etwas anderes ändern.
Der folgende Text kann in Windows-1252 kodiert und in UTF-8 dekodiert werden und wird als „MARQUɅ“ dekodiert. Der Originaltext ist jedoch klar und wird daher nicht geändert.
>>> ftfy.fix_text('IL Y MARQUÉ…') 'IL Y MARQUÉ…'
Diese Bibliothek hilft Ihnen, Unicode zu reparieren, der auf verschiedene Weise fehlerhaft ist. Das Ziel dieser Bibliothek besteht darin, schlechten Unicode zu empfangen und guten Unicode zur Verwendung in Ihrem Unicode-fähigen Code auszugeben. Es hat über 3.000 Sterne auf 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
Das obige ist der detaillierte Inhalt vonIch habe wieder sieben superleistungsfähige Python-Bibliotheken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!