首页 > 后端开发 > Python教程 > 为什么要在5中重新考虑Python工具箱

为什么要在5中重新考虑Python工具箱

DDD
发布: 2025-01-26 06:10:12
原创
471 人浏览过

Why You Should Rethink Your Python Toolbox in 5

升级你的2025年Python工具箱:探索你错过的重要库

本文最初发表在这里:https://www.php.cn/link/00bd13095d06c20b11a2993ca419d16b

Python功能强大,但你的工具能让你成为编程大神,也能让你陷入困境。不要成为那些还在使用过时工具的开发者,而世界其他地方都在飞速发展。

许多开发者仍然严重依赖Pandas、Requests和BeautifulSoup等库,但这些并非总是现代开发需求最有效的解决方案。在本文中,我们将探讨一些2025年顶级新兴的Python库,这些库将增强你的开发流程,并帮助你保持领先地位。

A) 过时的库和更好的替代品

  1. 放弃OS进行文件操作:使用pathlib

os模块在文件和路径处理方面通常很繁琐,因为它存在诸如特定于平台的路径分隔符和冗长的语法等问题。pathlib通过直观的面向对象方法(如用于连接路径的/、用于检查的.exists().is_file())简化了这一点,从而实现了无缝的跨平台兼容性。凭借其更简洁的语法和内置功能,pathlib消除了手动调整的需要,成为现代Python开发者的首选解决方案。

示例:

<code class="language-python">from pathlib import Path

# 创建文件
file = Path("example.txt")
file.write_text("Hello, Pathlib!")

# 读取文件
print(file.read_text())

# 检查是否存在
if file.exists():
    print("File exists")</code>
登录后复制
登录后复制

为什么要切换?

pathlib让生活更轻松。它比os更直观,采用面向对象的方法来处理文件和路径。你不必担心特定于平台的问题(如/),因为pathlib会为你处理所有这些。此外,语法更简洁易读。

对于小型项目来说,它并非改变游戏规则的工具,但对于任何大型项目,它绝对是前进的方向。

  1. 用httpx替换Requests:用于异步和同步请求的现代HTTP客户端

HTTPX已成为Requests的强大替代品,尤其是在2025年。与Requests不同,HTTPX还提供HTTP/2支持,这可以通过允许多路复用连接来显著减少延迟并改进请求处理。httpx是一个现代替代方案,它支持异步操作,同时又不牺牲Requests API的简单性和熟悉性。

示例:

<code class="language-python">import httpx
import asyncio

# asyncio用于启用异步编程,对于httpx的非阻塞HTTP请求来说是不可或缺的。
# 使用httpx,你可以使用async/await语法同时运行多个HTTP请求。


# 演示使用httpx的异步请求
async def async_get_data():
    async with httpx.AsyncClient() as client:
        response = await client.get('https://jsonplaceholder.typicode.com/posts/1')
        if response.status_code == 200:
            print("Async Response:", response.json())
        else:
            print(f"Error: {response.status_code}")

# 运行异步请求
asyncio.run(async_get_data())

# 使用httpx的异步HTTP/2请求
async def async_http2_request():
    async with httpx.AsyncClient(http2=True) as client:
        response = await client.get('https://http2.golang.org/reqinfo')
        if response.status_code == 200:
            print("HTTP/2 Response:", response.text)
        else:
            print(f"Error: {response.status_code}")

# 运行HTTP/2请求
asyncio.run(async_http2_request())

# 使用httpx客户端进行连接池
def connection_pooling_example():
    with httpx.Client(keep_alive=True) as client:
        url = "https://jsonplaceholder.typicode.com/posts/1"
        # 使用连接池进行多次请求
        for _ in range(5):
            response = client.get(url)
            if response.status_code == 200:
                print("Response Content:", response.text)
            else:
                print(f"Error: {response.status_code}")

# 运行连接池示例
connection_pooling_example()</code>
登录后复制
登录后复制

为什么要使用httpx?

如果你正在开发需要高并发性的应用程序(例如网络抓取或微服务),HTTPX对异步操作的支持可以显著提高性能。

HTTPX的另一个关键优势是其对每个主机的默认连接池,这减少了延迟和资源消耗。

基本上,如果你处理大量的I/O,httpx会为你节省很多麻烦。

  1. 超越Pandas:使用Polars

Pandas非常适合小型到中型数据集,但是当你向其中添加更大的数据集时,内存使用和性能就会开始下降。

诸如内存消耗缓慢、列操作效率低下以及数据转换(如.fillna().loc)方面的困难,是许多使用Pandas的开发人员经常遇到的问题。

Polars是一个现代的、内存高效的、多线程的数据处理库,它为大型数据集提供了比Pandas更快的替代方案。与Pandas不同,Polars支持并行处理,这加快了数据操作任务的速度。

示例:

<code class="language-python">from pathlib import Path

# 创建文件
file = Path("example.txt")
file.write_text("Hello, Pathlib!")

# 读取文件
print(file.read_text())

# 检查是否存在
if file.exists():
    print("File exists")</code>
登录后复制
登录后复制

为什么要使用Polars?

因此,如果你正在处理大规模数据处理,需要并行执行,或者想要一个内存高效的解决方案,那么Polars是现代数据科学和分析的最佳选择。Pandas可能是你的初恋,但Polars是那个可以处理繁重工作的人。

  1. 升级你的测试游戏:用pytest替换unittest

unittest?当然,它有效,但拜托,现在是2025年了。用它可吸引不了任何人。这就像在每个人都在使用iPhone的时候,试图用翻盖手机来吸引某人。是的,它有效,但这完全是一种麻烦。pytest:这是一个很酷的现代测试框架,它使编写和阅读测试变得更容易。

unittest是什么?

对于不熟悉的人来说,unittest是Python的内置测试框架,但它经常让人感觉过时,语法冗长,样板代码重复。使用pytest,你可以获得强大的功能,例如灵活的fixture管理、自动测试发现和内置参数化(使用@pytest.mark.parametrize)以轻松使用不同的输入运行相同的测试。它还支持通过pytest-xdist进行并行测试执行,这提高了大型测试套件的性能。

示例:

<code class="language-python">import httpx
import asyncio

# asyncio用于启用异步编程,对于httpx的非阻塞HTTP请求来说是不可或缺的。
# 使用httpx,你可以使用async/await语法同时运行多个HTTP请求。


# 演示使用httpx的异步请求
async def async_get_data():
    async with httpx.AsyncClient() as client:
        response = await client.get('https://jsonplaceholder.typicode.com/posts/1')
        if response.status_code == 200:
            print("Async Response:", response.json())
        else:
            print(f"Error: {response.status_code}")

# 运行异步请求
asyncio.run(async_get_data())

# 使用httpx的异步HTTP/2请求
async def async_http2_request():
    async with httpx.AsyncClient(http2=True) as client:
        response = await client.get('https://http2.golang.org/reqinfo')
        if response.status_code == 200:
            print("HTTP/2 Response:", response.text)
        else:
            print(f"Error: {response.status_code}")

# 运行HTTP/2请求
asyncio.run(async_http2_request())

# 使用httpx客户端进行连接池
def connection_pooling_example():
    with httpx.Client(keep_alive=True) as client:
        url = "https://jsonplaceholder.typicode.com/posts/1"
        # 使用连接池进行多次请求
        for _ in range(5):
            response = client.get(url)
            if response.status_code == 200:
                print("Response Content:", response.text)
            else:
                print(f"Error: {response.status_code}")

# 运行连接池示例
connection_pooling_example()</code>
登录后复制
登录后复制

为什么要使用test_?

通过使用test_前缀,你可以向pytest明确表示这些函数应该是测试。这是pytest的约定的一部分,它无需任何额外配置即可发现和运行正确的函数。

简而言之,pytest取代了unittest笨拙的设置,使测试更高效、更灵活和更可扩展。

2025年值得更多关注的库

  1. BeeWare用于跨平台Python应用程序开发

BeeWare是一个新兴的Python框架,尤其是在2025年,它值得更多关注。它允许Python开发者使用相同的代码库在多个平台(桌面、移动、Web)上编写原生应用程序。与PyQt或Tkinter等传统的桌面框架不同,BeeWare更进一步,支持在Android、iOS甚至WebAssembly上部署。BeeWare的一个关键特性是其跨平台特性,因此你可以编写一次应用程序,然后在任何地方运行它。

  1. pydantic用于数据验证

验证数据可能是一件苦差事。pydantic是一个Python库,它根据类型提示来验证和解析数据。如果你正在处理凌乱或不可靠的数据(例如API响应、用户输入或配置),Pydantic可以确保你的数据干净、结构化且无错误。

  1. Poetry用于打包和依赖管理

Poetry是一个现代的Python工具,用于轻松进行依赖管理和项目打包。

它使用pyproject.tomlpoetry.lock进行版本控制,确保可重复构建,并简化了发布到PyPI的过程。它提高了依赖关系图的透明度,使其成为比pip和setuptools等旧工具更强大的替代方案。

  1. FastAPI用于现代API

FastAPI是一个高性能的Python框架,通常用作Flask或Django REST Framework的替代方案,用于构建API。由于其可扩展性和效率,它非常适合小型项目和大型应用程序。FastAPI之所以突出,是因为它集成了Python的类型提示用于数据验证,并自动生成OpenAPI文档,从而使开发更快、更不易出错。

  1. asyncpg用于数据库操作

asyncpg是一个高性能的异步PostgreSQL数据库驱动程序,用于Python。想要在你的Python应用程序中进行快速查询吗?好的,不再有缓慢的阻塞调用会使你的应用程序像你仍在使用拨号上网一样缓慢。与psycopg2等传统的同步库不同,asyncpg使用异步编程来优化数据库操作,而不会阻塞应用程序中的其他任务,这在FastAPI、Tornado或Sanic等现代Web框架中尤其有用。

  1. DuckDB用于内存中分析

DuckDB是一个快速、内存中的数据库,旨在高效地运行复杂的分析查询。与PostgreSQL等传统数据库不同,DuckDB直接使用内存中的数据,允许你快速处理大型数据集,而无需外部服务器。

最终想法

在2025年,是时候重新考虑你的Python工具箱了。虽然Requests和Pandas等经典库有其作用,但httpx、Polars、rich和duckdb等新兴库可以简化你的工作流程。

以上是为什么要在5中重新考虑Python工具箱的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板