Rumah > Artikel > pembangunan bahagian belakang > Saya mendapat tujuh perpustakaan Python yang sangat berkuasa sekali lagi
Ada pepatah: "Anda tidak perlu mencipta semula roda." Perpustakaan Python adalah contoh terbaik untuk ini. Ia membantu anda menulis fungsi yang kompleks dan memakan masa dengan cara yang mudah. Setahu saya, projek yang bagus menggunakan beberapa perpustakaan terbaik.
Kami sedang menulis fungsi yang menukar nombor kepada binari dengan mengembalikan senarai bit. @pysnooper.snoop() boleh dikaji dengan menambahkan penghias:
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)
Atau, jika anda tidak mahu mengesan keseluruhan fungsi, anda boleh membungkus bahagian yang berkaitan dalam blok dengan:
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()
Outputnya adalah seperti berikut:
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
Sebagai pembangun, kebanyakan masa anda dihabiskan untuk penyahpepijatan. Pustaka ini ialah penyahpepijat. Kebanyakan orang menggunakan garisan cetakan di lokasi strategik, sesetengah daripadanya memaparkan nilai pembolehubah. Pustaka ini melakukan perkara yang sama, kecuali anda tidak membuat garis cetakan yang betul, anda hanya menambah barisan penghias pada fungsi yang anda minati. Anda akan mendapat log verbatim bagi fungsi tersebut, termasuk baris mana yang dijalankan apabila dan apabila pembolehubah tempatan ditukar. Ia mempunyai lebih 15k bintang di GitHub.
Alamat projek: 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)Alamat projek: https://github.com/dbader/schedule
3. MechanicalSoupPustaka ini akan membantu anda mencapainya Interaksi automatik dengan tapak web. Ia secara automatik menyimpan dan menghantar kuki, menjejak ubah hala, dan boleh mengikuti pautan dan menyerahkan borang. Ia tidak menggunakan Javascript. Pustaka ini mempunyai lebih 4k bintang di GitHub.
"""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)Alamat projek: https://github.com/MechanicalSoup/MechanicalSoup
4 ftfyApa yang boleh dilakukan
>>> from ftfy import fix_encoding >>> print(fix_encoding("(ง'⌣')ง")) (ง'⌣')ง
ftfy boleh membetulkan mojibake (Kekeliruan pengekodan):
Adakah ini terdengar mustahil? Tidak juga. UTF-8 ialah pengekodan yang direka dengan baik yang jelas apabila ia disalahgunakan, dan rentetan mojibake biasanya mengandungi semua maklumat yang kami perlukan untuk memulihkan rentetan asal.>>> import ftfy >>> ftfy.fix_text('✔ No problems') '✔ No problems'
ftfy boleh membetulkan berbilang lapisan mojibake pada masa yang sama:
Ia boleh membetulkan mojibake dengan "petikan bergulung" yang digunakan di atas, yang tidak boleh dinyahkodkan secara berterusan sehingga petikan dikembangkan:>>> ftfy.fix_text('The Mona Lisa doesn’t have eyebrows.') "The Mona Lisa doesn't have eyebrows."
ftfy boleh membetulkan mojibake yang mengandungi aksara U+A0 (ruang tidak pecah), tetapi U+A0 menjadi ruang ASCII, yang kemudiannya digabungkan dengan ruang berikut yang lain:
>>> ftfy.fix_text("l’humanité") "l'humanité"ftfy juga boleh menyahkod entiti HTML yang muncul di luar HTML, walaupun apabila entiti tersebut tersalah huruf besar:
>>> ftfy.fix_text('Ãxa0 perturber la réflexion') 'à perturber la réflexion' >>> ftfy.fix_text('à perturber la réflexion') 'à perturber la réflexion'Pembetulan ini tidak digunakan untuk semua kes, kerana ftfy mempunyai matlamat yang kukuh untuk mengelakkan akhbar menggunakan huruf besar yang salah - ia tidak boleh menukar teks yang dinyahkod dengan betul kepada sesuatu yang lain.
>>> # by the HTML 5 standard, only 'PÉREZ' is acceptable >>> ftfy.fix_text('PÉREZ') 'PÉREZ'
Teks berikut boleh dikodkan dalam Windows-1252 dan dinyahkod dalam UTF-8 dan akan dinyahkodkan sebagai "MARQUɅ". Walau bagaimanapun, teks asal adalah jelas, jadi ia tidak akan diubah.
Pustaka ini akan membantu anda membetulkan Unikod yang rosak dalam pelbagai cara. Matlamat perpustakaan ini adalah untuk menerima Unicode yang buruk dan mengeluarkan Unicode yang baik untuk digunakan dalam kod Unicode-aware anda. Ia mempunyai lebih 3k bintang di GitHub.>>> ftfy.fix_text('IL Y MARQUÉ…') 'IL Y MARQUÉ…'
项目地址: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
Atas ialah kandungan terperinci Saya mendapat tujuh perpustakaan Python yang sangat berkuasa sekali lagi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!