当前位置:

首页 > 编程开发 > 七个超强的 Python 库,让你的编程更上一层楼!

七个超强的 Python 库,让你的编程更上一层楼!

​有一句谚语:"不必重新造轮子"。Python库是这方面的最好例子。它可以帮助你以一种简单的方式编写复杂而耗时的功能。据我所知,一个好的项目会使用一些最好的库。1.PySnooper我们正在编写一个通过返回位列表将数字转换为二进制的函数。@pysnooper.snoop()可以通过添加装饰器来研究它:importpysnooper@pysnooper.snoop()defnumber_to_bits(number):ifnumber:bits=[]whilenumbe

本文目录

    ​有一句谚语:"不必重新造轮子"。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

    作为开发者,大部分时间都用在了调试上。这个库是一个调试器。大多数人都会在战略位置上使用print​行,其中一些行会显示变量的值。这个库可以做同样的事情,只不过你不需要精心设计正确的print行,而只需要在你感兴趣的函数上添加一行装饰符。你会得到一个函数的逐字记录日志,包括哪些行在什么时候运行,以及局部变量什么时候被改变。它在GitHub上有超过15k颗星。

    项目地址:https://github.com/cool-RR/PySnooper

    2. schedule

    人类的 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函数(或任何其他可调用)。它包括很多功能,比如周期性工作的进程内调度器(不需要额外的进程),非常轻量级,没有外部依赖性,有很好的测试覆盖率等等。这个库在GitHub上有超过10k颗星。

    项目地址: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)

    这个库将帮助你实现与网站的自动互动。它自动存储和发送cookies,跟踪重定向,并能跟踪链接和提交表单。它不做Javascript。这个库在GitHub上有超过4k颗星。

    项目地址: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+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千颗星。

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

    5. rpyc

    七个超强的 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

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    我从测量帮工成长为技术骨干(海外纪闻)
    我从测量帮工成长为技术骨干(海外纪闻)

    “稍微往左移移,慢点,好,就在这。” 全站仪前的坐标点需要精确核对,通过对讲机传来的指令清晰有力,同时手势也同步示意着不远处的立杆员标定放样点。这一刻,大桥桥墩的位置正随着一个个坐标的落地而逐渐显现。 第一次独立承担桥梁放样任务,责任固然重大,但伴随着每个点的成功定位,那份扎实的成就感也油然而生。这

    欧洲最大苹果博物馆开馆:展出数千藏品,还原乔布斯创业车库
    欧洲最大苹果博物馆开馆:展出数千藏品,还原乔布斯创业车库

    欧洲最大苹果博物馆开馆:一场穿越科技与情怀的朝圣之旅 科技圈最近有个大新闻:为庆祝苹果公司成立50周年,欧洲规模最大的苹果博物馆,已于4月2日在荷兰历史名城乌得勒支正式向公众敞开了大门。这不仅仅是一个展览,更像是一次对个人电脑革命和硅谷精神的深度回溯。 走进这座占地超过21000平方英尺的广阔空间,

    如何成为一名熟练的Golang开发者
    如何成为一名熟练的Golang开发者

    如何培养自己成为一名合格的Golang工程师随着互联网技术的发展,越来越多的人开始学习和使用Golang,这是一种功能强大且性能优越的编程语言。作为一名Golang工程师,不仅需要具备扎实的编程基础,还需要不断学习和实践,才能不断提升自己的技能。下面将介绍一些培养成为一名合格的Golang工程师的方法,同时会提供一些具体的代码示例。学习Golang基础知识要

     谷歌被曝取消 Pixel Tablet 3 平板开发 项目人员重新分配
    谷歌被曝取消 Pixel Tablet 3 平板开发 项目人员重新分配

    2019年,谷歌曾宣布放弃平板电脑。然而,谷歌在2022年预告了PixelTablet,并在2023年发布。现在看来,谷歌又要放弃平板电脑了。CNMO从外媒获悉,谷歌已经取消了PixelTablet3的开发。多个接近该项目的行业消息人士证实,该设备(内部称为"Kiyomi")将不会继续推进。据知情人士透露,谷歌上周做出了这一决定,并举行了内部沟通和会议以通知相关团队。之前分配到PixelTablet3项目的人员将被重新分配到公司内的其他项目。在此之前,谷歌在平板电脑市场做出了一些努力,包括2023年推出P

    AI空战视频曝光!美国空军飞行员能在模拟战中赢过AI吗?
    AI空战视频曝光!美国空军飞行员能在模拟战中赢过AI吗?

    编译|伊风美国国防高级研究计划局(DARPA)宣布,利用实验性的X-62AVISTA飞机对新的人工智能系统进行了成功测试。他们并未透露两者谁更技高一筹。在模拟空战中,AI系统驱使的X-62A与人类驾驶的F-16飞机进行对抗——前者被称为首次“基于机器学习的自主性的飞行关键系统”。军方表示,各种自主系统已经使用了几十年,但由于“高风险和缺乏独立控制”,机器学习工具以前一直被禁止使用。科幻小说在过去100年中发出的警告,很容易解释为什么人类会对AI驱动的战斗机保持警惕。在测试X-62A+VISTA时,有乘客在

    利用PHP实战:从头开始建立互联网项目
    利用PHP实战:从头开始建立互联网项目

    PHP互联网项目搭建实战:从零开始搭建完整项目随着互联网的不断发展,PHP作为一种常用的后端开发语言,在互联网项目中扮演着重要的角色。本文将带您从零开始,通过具体的代码示例,了解如何搭建一个完整的PHP互联网项目。我们将逐步介绍项目的需求分析、数据库设计、后端接口开发以及前端页面实现,帮助您全面了解项目开发的流程和技术细节。1.项目需求分析假设我们要开发一

    PHP互联网项目搭建全程指南:轻松创建可靠的网络应用
    PHP互联网项目搭建全程指南:轻松创建可靠的网络应用

    在互联网时代,PHP作为一种功能强大且易于学习使用的编程语言,在网络应用开发中扮演了重要角色。许多网站和应用程序都是基于PHP开发的,其灵活性和可扩展性使其成为了开发者们首选的工具。在本文中,我们将为大家提供一个全程指导,帮助搭建一个稳定可靠的网络应用,并附带具体的代码示例,让读者可以快速上手。第一部分:环境搭建在开始任何PHP项目之前,首先要搭建好开发环境

    探讨Golang项目开发的成本
    探讨Golang项目开发的成本

    现代互联网时代,软件开发已经成为了各行各业都无法或缺的一个重要环节。而在软件开发中,选择合适的开发语言也是非常重要的一点。在众多的开发语言中,Golang以其高效的并发性能和简洁的语法,逐渐成为了很多开发者的首选。本文将探讨在使用Golang开发项目时可能面临的成本以及如何优化开发过程。首先,我们来看看使用Golang开发项目可能会面临的成本。相比其他一些流

    Discuz 是否属于开源项目?
    Discuz 是否属于开源项目?

    Discuz是一个开源项目吗?在开源软件领域,Discuz绝对是一个备受争议的话题。Discuz是一款国内知名的论坛系统,它由Comsenz公司开发和维护,为了满足用户需求,提供了多种定制化的功能和服务。但是,对于Discuz是否属于开源项目,却引发了很多争论。什么是开源软件?在简单的理解中,开源软件就是指软件的源代码是公开的,任何人都可以查看

    Golang和VS:选择最适合你项目的工具
    Golang和VS:选择最适合你项目的工具

    Golang与VS的对决:哪个更适合你的项目?随着软件开发领域的不断发展,各种编程语言和开发工具也层出不穷。在这个多元化的选择面前,开发者们往往会面临一个重要的问题:选择哪种编程语言和开发工具来开发自己的项目?在这篇文章中,我们将探讨Golang(Go语言)和VisualStudio(VS)这两种选择,分析它们的优劣势,以帮助读者更好地决定哪种更适合自己的

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。