「車輪を再発明する必要はない」ということわざがあります。 Python ライブラリはその最良の例です。複雑で時間のかかる機能を簡単な方法で作成するのに役立ちます。私の知る限り、優れたプロジェクトには最高のライブラリがいくつか使用されています。
ビットのリストを返すことで数値をバイナリに変換する関数を作成しています。 @pysnooper.snoop() は、デコレータを追加することで調べることができます:
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)
あるいは、関数全体をトレースしたくない場合は、関連する部分を 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()
出力は次のようになります:
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
開発者として、ほとんどの時間はデバッグに費やされます。このライブラリはデバッガです。ほとんどの人は戦略的な場所で印刷行を使用しており、その中には変数の値を表示するものもあります。このライブラリは同じことを行いますが、適切な印刷行を作成する代わりに、関心のある関数にデコレータの行を追加するだけです。どの行がいつ実行されたか、ローカル変数がいつ変更されたかなど、関数の逐語的なログが取得されます。 GitHub には 15,000 個以上のスターが付いています。
プロジェクト アドレス: https://github.com/cool-RR/PySnooper
Human Python ジョブ スケジュール。わかりやすい構文を使用して、Python 関数 (またはその他の呼び出し可能な関数) を定期的に実行します。
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)
これは、人間用の Python ジョブ スケジューリング ライブラリです。これにより、わかりやすい構文を使用して Python 関数 (またはその他の呼び出し可能な関数) を定期的に実行できます。これには、定期的に動作するインプロセス スケジューラ (追加のプロセスは必要ありません)、非常に軽量、外部依存関係がない、優れたテスト カバレッジなど、多くの機能が含まれています。このライブラリには、GitHub 上に 10,000 を超えるスターが付いています。
プロジェクト アドレス: 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)
このライブラリは、Web サイトの実装に役立ちます自動インタラクション。 Cookie を自動的に保存して送信し、リダイレクトを追跡し、リンクをたどってフォームを送信できます。 JavaScriptは行いません。このライブラリには GitHub 上に 4,000 個以上のスターがあります。
プロジェクトアドレス: https://github.com/MechanicalSoup/MechanicalSoup
>>> from ftfy import fix_encoding >>> print(fix_encoding("(ง'⌣')ง")) (ง'⌣')ง
ftfy でできることの例をいくつか示します (実際の世界で見られます):
ftfy は、明らかに UTF-8 であるが他の文字にデコードされる文字パターンを検出することで、mojibake (エンコーディングの難読化) を修正できます。
>>> import ftfy >>> ftfy.fix_text('✔ No problems') '✔ No problems'
これは不可能だと思われますか?本当にありません。 UTF-8 は、誤用された場合に明らかである、適切に設計されたエンコーディングであり、通常、mojibake の文字列には、元の文字列を復元するために必要なすべての情報が含まれています。
ftfy は、mojibake の複数のレイヤーを同時に修正できます:
>>> ftfy.fix_text('The Mona Lisa doesn’t have eyebrows.') "The Mona Lisa doesn't have eyebrows."
上記で適用された「中引用符」を含む mojibake を修正できます。引用符が展開されるまで継続的にデコードすることはできません:
>>> ftfy.fix_text("l’humanité") "l'humanité"
ftfy 文字 U A0 (非改行スペース) を含む mojibake を修正できますが、U A0 は ASCII スペースになり、後続の別のスペースと結合されます:
>>> ftfy.fix_text('Ãxa0 perturber la réflexion') 'à perturber la réflexion' >>> ftfy.fix_text('à perturber la réflexion') 'à perturber la réflexion'
ftfy 外側に表示される HTML エンティティもデコードできますエンティティが大文字で間違って使用されている場合でも、 HTML のエラーが発生します:
>>> # by the HTML 5 standard, only 'PÉREZ' is acceptable >>> ftfy.fix_text('PÉREZ') 'PÉREZ'
ftfy には誤検知を回避するという確固たる目標があるため、これらの修正はすべてのケースに適用されるわけではありません。正しくデコードされるべきではありません。テキストは何かに変更されます。それ以外。
次のテキストは Windows-1252 でエンコードし、UTF-8 でデコードでき、「MARQUɅ」としてデコードされます。ただし、原文は明瞭なので変更しません。
>>> ftfy.fix_text('IL Y MARQUÉ…') 'IL Y MARQUÉ…'
このライブラリは、さまざまな方法で壊れた Unicode を修正するのに役立ちます。このライブラリの目的は、不正な Unicode を受信し、Unicode 対応コードで使用できる適切な Unicode を出力することです。 GitHub には 3,000 個以上のスターが付いています。
项目地址: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
以上が7 つの超強力な Python ライブラリを再び入手しましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。