> 백엔드 개발 > 파이썬 튜토리얼 > 5에서 Python 도구 상자를 다시 생각해야 하는 이유

5에서 Python 도구 상자를 다시 생각해야 하는 이유

DDD
풀어 주다: 2025-01-26 06:10:12
원래의
478명이 탐색했습니다.

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로 교체: 비동기식 및 동기식 요청을 위한 최신 HTTP 클라이언트

HTTPX는 특히 2025년에 요청에 대한 강력한 대안이 되었습니다. 요청과 달리 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 너머: 극성 사용

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는 현대 데이터 과학 및 분석을 위한 최고의 선택입니다. 팬더는 당신의 첫사랑일지도 모르지만 Polars는 무거운 짐을 감당할 수있는 동물입니다.

  1. 테스트 게임 업그레이드: unittest를 pytest로 교체

유닛테스트? 물론, 작동합니다. 하지만 어서, 2025년이군요. 당신은 그것으로 누구도 매력을 느끼지 못할 것입니다. 모두가 아이폰을 사용하고 있는데 폴더폰으로 누군가를 유혹하려는 것과 같습니다. 예, 작동하지만 완전히 성가신 일입니다. pytest: 테스트를 더 쉽게 작성하고 읽을 수 있게 해주는 멋진 최신 테스트 프레임워크입니다.

유닛테스트란 무엇인가요?

익숙하지 않은 분들을 위해 말씀드리자면, 단위 테스트는 Python에 내장된 테스트 프레임워크이지만 장황한 구문과 반복적인 상용구 코드로 인해 종종 구식처럼 느껴집니다. pytest를 사용하면 유연한 픽스처 관리, 자동 테스트 검색, 내장 매개변수화(@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 프레임 워크, 특히 2025 년에 더 많은 관심을받을 가치가 있습니다. Python 개발자는 동일한 코드 라이브러리를 사용하여 여러 플랫폼 (데스크탑, 모바일, 웹)에 기본 응용 프로그램을 작성할 수 있습니다. PYQT 또는 Tkinter와 같은 기존 데스크톱 프레임 워크와 달리 Beeware는 Android, iOS 및 WebAssembly의 배포를 추가로 지원하며 지원합니다. Beeware의 주요 기능 중 하나는 Cross -Platform 기능이므로 응용 프로그램을 한 번 작성하여 어디서나 실행할 수 있습니다.

    데이터 검증을위한 Pydantic

데이터 확인은 쓰라린 일 수 있습니다. Pydantic은 유형 프롬프트를 기반으로 데이터를 검증하고 분석하는 Python 라이브러리입니다. 지저분하거나 신뢰할 수없는 데이터 (예 : API 응답, 사용자 입력 또는 구성)를 처리하는 경우 Pydantic은 데이터가 깨끗하고 구조화되고 잘못되었는지 확인할 수 있습니다.

    포장 및 의존 관리를위한시의
  1. 시는 의존성 관리 및 프로젝트 포장을위한 최신 파이썬 도구입니다. > 및 를 사용하여 버전을 수행하여 반복적으로 구성 할 수 있는지 확인하고 PYPI를 게시하는 프로세스를 단순화합니다. 종속성 다이어그램의 투명성을 향상시켜 PIP 및 Setuptools와 같은 오래된 도구보다 강력한 대안이됩니다.
현대 API를위한 fastapi

Fastapi는 고성능 파이썬 프레임 워크로, 일반적으로 API를 구축하기위한 플라스크 또는 Django REST 프레임 워크의 대안으로 사용됩니다. 확장 성과 효율성으로 인해 소규모 프로젝트 및 대규모 응용 프로그램에 매우 적합합니다. Fastapi는 파이썬 유형을 통합하여 데이터 검증을 나타내고 OpenAPI 문서를 자동으로 생성하므로 개발이 더 빠르고 실수 할 가능성이 높기 때문에 강조 표시됩니다.

    asyncpg는 데이터베이스 작업에 사용됩니다.
  1. asyncpg는 Python에 대한 고성능 비동기 비동기 PostgreSQL 데이터베이스 드라이버입니다. 파이썬 응용 프로그램에서 빠른 쿼리를 원하십니까? 좋아, 더 이상 차단 통화가 느리지 않으면 여전히 다이얼 -UP 인터넷을 사용하고있을 때 응용 프로그램이 느려집니다. PSYCOPG2와 같은 기존의 동기화 라이브러리와 달리 ASYNCPG는 비동기 프로그래밍을 사용하여 응용 프로그램의 다른 작업을 차단하지 않고 데이터베이스 작업을 최적화합니다. duckdb는 메모리 분석에 사용됩니다

duckdb는 빠른 메모리 데이터베이스로 복잡한 분석 및 쿼리를 효과적으로 실행하는 것을 목표로합니다. PostgreSQL과 같은 기존 데이터베이스와 달리 DupDB는 메모리의 데이터를 직접 사용하여 외부 서버없이 큰 데이터 세트를 빠르게 처리 할 수 ​​있습니다.

최종 아이디어

2025 년에는 Python 도구 상자를 다시 고려해야 할 때입니다. 요청 및 팬더와 같은 클래식 라이브러리에는 그 효과가 있지만 HTTPX, Polars, Rich 및 DuckDB와 같은 새로운 라이브러리는 워크 플로를 단순화 할 수 있습니다. pyproject.toml

위 내용은 5에서 Python 도구 상자를 다시 생각해야 하는 이유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿