>백엔드 개발 >파이썬 튜토리얼 >7개의 매우 강력한 Python 라이브러리를 다시 얻었습니다.

7개의 매우 강력한 Python 라이브러리를 다시 얻었습니다.

王林
王林앞으로
2023-04-11 22:10:101759검색

​속담이 있습니다: "바퀴를 다시 만들 필요는 없습니다." Python 라이브러리가 이에 대한 가장 좋은 예입니다. 복잡하고 시간이 많이 걸리는 기능을 간단한 방법으로 작성하는 데 도움이 됩니다. 내가 아는 한, 좋은 프로젝트는 최고의 라이브러리를 사용합니다.

1. PySnooper

비트 목록을 반환하여 숫자를 이진수로 변환하는 함수를 작성하고 있습니다. @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

2.schedule

Human Python 작업 스케줄링. 친숙한 구문을 사용하여 정기적으로 Python 함수(또는 기타 호출 가능한 함수)를 실행합니다.

  • 사람을 위해 설계된 간단하고 사용하기 쉬운 작업 예약 API입니다.
  • 주기적인 작업을 위한 진행 중인 스케줄러입니다. 추가 과정이 필요하지 않습니다!
  • 매우 가볍고 외부 종속성이 없습니다.
  • 훌륭한 테스트 범위.
  • Python 및 3.6, 3.7, 3.8, 3.9에서 테스트 가능
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 함수(또는 기타 호출 가능)를 실행할 수 있습니다. 여기에는 주기적으로 작동하고(추가 프로세스가 필요하지 않음) 매우 가볍고, 외부 종속성이 없으며, 테스트 적용 범위가 좋은 in-process 스케줄러와 같은 많은 기능이 포함되어 있습니다. 이 라이브러리에는 GitHub에 10,000개가 넘는 별이 있습니다.

프로젝트 주소: https://github.com/dbader/schedule

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)

이 라이브러리는 웹 사이트와의 자동 상호 작용을 실현하는 데 도움이 됩니다. 자동으로 쿠키를 저장 및 전송하고, 리디렉션을 추적하며, 링크를 따라가고 양식을 제출할 수 있습니다. 자바스크립트를 수행하지 않습니다. 이 라이브러리는 GitHub에서 4,000개가 넘는 별을 보유하고 있습니다.

프로젝트 주소: https://github.com/MechanicalSoup/MechanicalSoup

4.ftfy

>>> 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 문자가 포함된 mojibake를 수정할 수 있습니다. mojibake의 +A0(줄바꿈 방지 공백), 그러나 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É…'

이 라이브러리는 다양한 방식으로 손상된 유니코드를 수정하는 데 도움이 됩니다. 이 라이브러리의 목표는 잘못된 유니코드를 수신하고 유니코드 인식 코드에 사용할 수 있는 좋은 유니코드를 출력하는 것입니다. GitHub에는 별이 3,000개 이상 있습니다.

项目地址:https://github.com/rspeer/python-ftfy

5. rpyc

7개의 매우 강력한 Python 라이브러리를 다시 얻었습니다.

这是一个透明的python库,用于对称的远程过程调用、集群和分布式计算。它利用对象代理这一技术,利用python的动态特性,克服进程和计算机之间的物理界限,使远程对象可以像本地一样被操作。这个库在GitHub上有超过1k颗星。

项目地址:https://github.com/tomerfiliba-org/rpyc

6. pyglet

pyglet 的一些特性是:

  • 没有外部依赖项或安装要求。对于大多数应用程序和游戏需求,pyglet 除了 Python 之外不需要其他任何东西,简化了分发和安装。使用 PyInstaller 等冷冻机可以轻松打包您的项目。
  • 利用多窗口和多显示器桌面。pyglet允许你使用多个平台原生窗口,并且完全了解用于全屏游戏的多显示器设置。
  • 加载几乎任何格式的图像、声音、音乐和视频。pyglet可以选择使用 FFmpeg 播放音频格式,如 MP3、OGG/Vorbis 和 WMA,以及视频格式,如 MPEG2、H.264、H.265、WMV 和 Xvid。如果没有 FFmpeg,pyglet包含对 wav、png、bmp 等标准格式的内置支持。
  • pyglet 完全用纯 Python 编写,并利用ctypes模块与系统库进行交互。你可以修改代码库或做出贡献,而无需任何第二语言编译步骤或编译器设置。尽管是纯 Python,但pyglet具有出色的性能,这要归功于用于绘制数千个对象的高级批处理。
  • pyglet 是在 BSD 开源许可证下提供的,允许你将它用于商业和其他开源项目,几乎没有限制。
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

7. rope

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제