Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Anda Perlu Memikirkan Semula Kotak Alat Python Anda dalam 5

Mengapa Anda Perlu Memikirkan Semula Kotak Alat Python Anda dalam 5

DDD
Lepaskan: 2025-01-26 06:10:12
asal
512 orang telah melayarinya

Why You Should Rethink Your Python Toolbox in 5

Naik taraf kotak alat Python anda untuk 2025: Terokai perpustakaan penting yang anda terlepas

Artikel ini pada asalnya diterbitkan di sini: https://www.php.cn/link/00bd13095d06c20b11a2993ca419d16b

Python berkuasa, tetapi alatan anda boleh menjadikan anda mahir pengaturcaraan atau ia boleh menyebabkan anda menghadapi masalah. Jangan jadi salah seorang pembangun yang masih menggunakan alatan lapuk sementara seluruh dunia sedang berkembang dengan pantas.

Ramai pembangun masih banyak bergantung pada perpustakaan seperti Pandas, Requests dan BeautifulSoup, tetapi ini bukanlah penyelesaian yang paling berkesan untuk keperluan pembangunan moden. Dalam artikel ini, kami akan meneroka beberapa perpustakaan Python yang muncul teratas pada tahun 2025 yang akan meningkatkan proses pembangunan anda dan membantu anda berada di hadapan.

A) Perpustakaan usang dan alternatif yang lebih baik

  1. Tinggalkan OS untuk operasi fail: gunakan pathlib

Modul os selalunya menyusahkan dari segi pengendalian fail dan laluan kerana ia mengalami masalah seperti pemisah laluan khusus platform dan sintaks verbose. pathlib memudahkan ini dengan kaedah berorientasikan objek intuitif seperti / untuk menggabungkan laluan, .exists() dan .is_file() untuk pemeriksaan, menghasilkan keserasian merentas platform yang lancar. Dengan sintaks yang lebih bersih dan fungsi terbina dalam, pathlib menghapuskan keperluan untuk penalaan manual, menjadikannya penyelesaian pilihan untuk pembangun Python moden.

Contoh:

<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>
Salin selepas log masuk
Salin selepas log masuk

Kenapa tukar?

pathlib menjadikan hidup lebih mudah. Ia lebih intuitif daripada os dan menggunakan pendekatan berorientasikan objek untuk mengendalikan fail dan laluan. Anda tidak perlu risau tentang isu khusus platform (seperti lwn. /) kerana pathlib mengendalikan semua itu untuk anda. Selain itu, sintaksnya lebih ringkas dan mudah dibaca.

Ia bukan pengubah permainan untuk projek kecil, tetapi untuk mana-mana projek besar ia pastinya adalah jalan ke hadapan.

  1. Ganti Permintaan dengan httpx: klien HTTP moden untuk permintaan tak segerak dan segerak

HTTPX telah menjadi alternatif yang berkuasa kepada Permintaan, terutamanya pada tahun 2025. Tidak seperti Permintaan, HTTPX juga menyediakan sokongan HTTP/2, yang boleh mengurangkan kependaman dengan ketara dan meningkatkan pemprosesan permintaan dengan membenarkan sambungan berganda. httpx ialah alternatif moden yang menyokong operasi tak segerak tanpa mengorbankan kesederhanaan dan kebiasaan API Permintaan.

Contoh:

<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>
Salin selepas log masuk
Salin selepas log masuk

Mengapa menggunakan httpx?

Jika anda sedang membangunkan aplikasi yang memerlukan keselarasan tinggi (seperti pengikisan web atau perkhidmatan mikro), sokongan HTTPX untuk operasi tak segerak boleh meningkatkan prestasi dengan ketara.

Satu lagi kelebihan utama HTTPX ialah kumpulan sambungan lalai bagi setiap hos, yang mengurangkan kependaman dan penggunaan sumber.

Pada asasnya, jika anda berurusan dengan banyak I/O, httpx akan menjimatkan banyak masalah.

  1. Melebihi Panda: Gunakan Kutub

Panda bagus untuk set data bersaiz kecil hingga sederhana, tetapi apabila anda menambah set data yang lebih besar padanya, penggunaan memori dan prestasi mula berkurangan.

Kesukaran seperti penggunaan memori yang perlahan, operasi lajur yang tidak cekap dan penukaran data (seperti .fillna() dan .loc) adalah masalah biasa yang dihadapi oleh banyak pembangun yang menggunakan Panda.

Polars ialah perpustakaan pemprosesan data moden, cekap memori, berbilang benang yang menyediakan alternatif yang lebih pantas kepada Panda untuk set data yang besar. Tidak seperti Panda, Polars menyokong pemprosesan selari, yang mempercepatkan tugas manipulasi data.

Contoh:

<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>
Salin selepas log masuk
Salin selepas log masuk

Kenapa guna Polar?

Jadi, jika anda berurusan dengan pemprosesan data berskala besar, memerlukan pelaksanaan selari, atau mahukan penyelesaian yang cekap memori, Polars ialah pilihan terbaik untuk sains dan analisis data moden. Panda mungkin cinta pertama anda, tetapi Polars adalah yang boleh menahan beban berat.

  1. Naik taraf permainan ujian anda: gantikan unittest dengan pytest

ujian unit? Sudah tentu, ia berfungsi, tetapi ayuh, sudah 2025. Anda tidak akan menarik sesiapa pun dengannya. Ia seperti cuba memikat seseorang dengan telefon selip apabila semua orang menggunakan iPhone. Ya, ia berfungsi, tetapi ia sangat mengganggu. pytest: Ini ialah rangka kerja ujian moden yang hebat yang menjadikan ujian menulis dan membaca lebih mudah.

Apakah unittest?

Bagi mereka yang tidak biasa, unittest ialah rangka kerja ujian terbina dalam Python, tetapi ia sering terasa ketinggalan zaman, dengan sintaks verbose dan kod boilerplate berulang. Dengan pytest, anda mendapat ciri berkuasa seperti pengurusan lekapan yang fleksibel, penemuan ujian automatik dan parameterisasi terbina dalam (menggunakan @pytest.mark.parametrize) untuk menjalankan ujian yang sama dengan mudah dengan input yang berbeza. Ia juga menyokong pelaksanaan ujian selari melalui pytest-xdist, yang meningkatkan prestasi suite ujian yang besar.

Contoh:

<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>
Salin selepas log masuk
Salin selepas log masuk

Mengapa menggunakan test_?

Dengan menggunakan awalan test_, anda boleh menjelaskan dengan jelas kepada pytest bahawa fungsi ini harus menjadi ujian. Ini adalah sebahagian daripada konvensyen pytest untuk menemui dan menjalankan fungsi yang betul tanpa sebarang konfigurasi tambahan.

Ringkasnya, pytest menggantikan persediaan unittest yang kekok dan menjadikan ujian lebih cekap, fleksibel dan berskala.

Perpustakaan yang patut diberi perhatian lebih pada tahun 2025

  1. BeeWare untuk pembangunan aplikasi Python merentas platform

BeeWare ialah rangka kerja Python baru muncul yang patut diberi perhatian lebih, terutamanya pada tahun 2025. Ia membolehkan pembangun Python menulis aplikasi asli pada berbilang platform (desktop, mudah alih, web) menggunakan asas kod yang sama. Tidak seperti rangka kerja desktop tradisional seperti PyQt atau Tkinter, BeeWare melangkah lebih jauh dan menyokong penggunaan pada Android, iOS dan juga WebAssembly. Ciri utama BeeWare ialah sifat merentas platformnya, jadi anda boleh menulis aplikasi sekali dan menjalankannya di mana-mana sahaja.

  1. pydantic untuk pengesahan data

Mengesahkan data boleh menjadi tugas. pydantic ialah perpustakaan Python yang mengesahkan dan menghuraikan data berdasarkan petunjuk jenis. Jika anda berhadapan dengan data yang tidak kemas atau tidak boleh dipercayai (seperti respons API, input pengguna atau konfigurasi), Pydantic boleh memastikan data anda bersih, berstruktur dan bebas ralat.

  1. Puisi untuk pembungkusan dan pengurusan pergantungan

Puisi ialah alat Python moden untuk pengurusan pergantungan yang mudah dan pembungkusan projek.

Ia menggunakan pyproject.toml dan poetry.lock untuk kawalan versi, memastikan binaan boleh dihasilkan semula dan memudahkan penerbitan ke PyPI. Ia meningkatkan ketelusan graf pergantungan, menjadikannya alternatif yang lebih berkuasa kepada alatan lama seperti pip dan setuptools.

  1. FastAPI untuk API moden

FastAPI ialah rangka kerja Python berprestasi tinggi yang sering digunakan sebagai alternatif kepada Rangka Kerja Flask atau Django REST untuk membina API. Oleh kerana kebolehskalaan dan kecekapannya, ia sesuai untuk kedua-dua projek kecil dan aplikasi besar. FastAPI menyerlah kerana ia menyepadukan pembayang jenis Python untuk pengesahan data dan secara automatik menjana dokumentasi OpenAPI, menjadikan pembangunan lebih pantas dan kurang terdedah kepada ralat.

  1. asyncpg digunakan untuk operasi pangkalan data

asyncpg ialah pemacu pangkalan data PostgreSQL tak segerak berprestasi tinggi untuk Python. Mahu pertanyaan pantas dalam aplikasi Python anda? Okey, tiada lagi panggilan menyekat perlahan menjadikan aplikasi anda perlahan seolah-olah anda masih menggunakan dail. Tidak seperti perpustakaan penyegerakan tradisional seperti psycopg2, asyncpg menggunakan pengaturcaraan tak segerak untuk mengoptimumkan operasi pangkalan data tanpa menyekat tugas lain dalam aplikasi, yang amat berguna dalam rangka kerja web moden seperti FastAPI, Tornado atau Sanic.

  1. DuckDB untuk analitik dalam memori

DuckDB ialah pangkalan data dalam memori pantas yang direka untuk menjalankan pertanyaan analitikal yang kompleks dengan cekap. Tidak seperti pangkalan data tradisional seperti PostgreSQL, DuckDB menggunakan data secara langsung dalam ingatan, membolehkan anda memproses set data besar dengan cepat tanpa memerlukan pelayan luaran.

Pemikiran Akhir

Pada tahun 2025, sudah tiba masanya untuk memikirkan semula kotak alat Python anda. Walaupun perpustakaan klasik seperti Requests dan Panda mempunyai tempat mereka, perpustakaan yang muncul seperti httpx, Polars, rich, dan duckdb boleh menyelaraskan aliran kerja anda.

Atas ialah kandungan terperinci Mengapa Anda Perlu Memikirkan Semula Kotak Alat Python Anda dalam 5. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan