...

2022 年現代 Python 編程的 4 個關鍵點

2022-01-29

作爲一個誕生已有 30 餘年的編程語言,Python 的流行度在近幾年迎來了爆炸性的增長(cháng)。爲了方便大家能(néng)夠更好(hǎo)的采用 Python,利用該語言中所有新的和強大的功能(néng);InfoWorld 歸納總結了開(kāi)發(fā)人員在 2022 年編寫現代 Python 時(shí)所需要理解的一些關鍵概念。

總共四個方面(miàn),具體如下:

1、Python 中的類型提示

Python 最近引入的類型提示語法允許 linter 和第三方代碼質量工具在運行前分析你的代碼,并在檢測出可能(néng)發(fā)生的錯誤。你創建的 Python 代碼與他人共享的次數越多,大家就(jiù)越有可能(néng)從使用類型提示中受益。

Python 的每個後(hòu)續版本都(dōu)推出了更複雜、更強大的類型注解。如果你養成(chéng)了在短期内學(xué)習如何使用類型注解的習慣,那麼(me)就(jiù)能(néng)夠更好(hǎo)地利用每一種(zhǒng)新的類型提示創新。

重要的是要記住類型提示是可選的,而不是必須的。不是每個項目都(dōu)需要它們,類型提示可以使你的大項目變得易懂,但小項目卻并不必要。值得注意的是,雖然在運行時(shí)不強制執行類型提示,但你可以使用 Pydantic 來使之成(chéng)爲可能(néng)。許多廣泛使用的 Python 項目:如 FastAPI,都(dōu)廣泛使用 Pydantic。

2、Python 虛拟環境和包管理

對(duì)于簡單的項目和要求不高的開(kāi)發(fā)工作,通常可以隻使用 Python 的内置venv工具將(jiāng)項目及其需求分開(kāi)。但 Python 工具的最新進(jìn)展則爲開(kāi)發(fā)人員提供了更多選擇:

 

  • Pyenv:如果你需要安裝多個 Python 版本(3.8、3.9、3.10)以滿足不同的項目要求,Pyenv 允許你在每個項目的基礎上在它們之間進(jìn)行全局切換。值得注意的是,它沒(méi)有官方的 Windows 支持,但确實存在非官方的 Windows 端口。

  • Pipenv:被稱爲“Python dev workflow for humans”,Pipenv 旨在管理虛拟環境以及項目的所有依賴項。它還(hái)确保依賴關系是确定性的 —— 你得到你想要的特定版本,并且它們以你要求的組合方式工作。但是,Pipenv 不涉及任何形式的打包,因此對(duì)于你最終想要上傳到 PyPI 或與他人共享的項目來說(shuō),它并不理想。

  • Poetry:Poetry 擴展了 Pipenv 的工具集,不僅可以管理項目和需求,還(hái)可以輕松地將(jiāng)項目部署到 PyPI。它還(hái)爲你管理獨立于項目目錄的虛拟環境。

  • PDM:PDM(“Python Development Master”的縮寫)是這(zhè)方面(miàn)最新的前沿項目。與 Poetry 和 Pipenv 一樣,PDM 爲你提供了一個用于設置項目、管理其依賴項以及從中構建分發(fā)工件的單一界面(miàn)。PDM 還(hái)使用 PEP 582 标準將(jiāng)包本地存儲到項目中,因此無需創建每個項目的虛拟環境。但是這(zhè)個工具相對(duì)較新,所以在生産中采用它之前要确保它能(néng)暫時(shí)工作。

3、新的 Python 語法

Python 的發(fā)展意味著(zhe)該語言本身增加了許多新功能(néng)。Python 最新的幾個版本中添加了一些有用的語法結構,使其更強大和更簡潔程。最近增加的一些内容包括:

Pattern matching

最近最大的新增功能(néng)是結構模式匹配,出現在 Python 3.10 中。它不僅僅是所謂的“switch/case for Python”,還(hái)可以讓你根據對(duì)象的内容或結構做出控制流決策。

The ‘walrus operator’

因其外觀 (:=) 而得名,在 Python 3.8 中添加的“walrus operator(海象操作符)”引入了賦值表達式,這(zhè)是一種(zhǒng)將(jiāng)一個值賦給一個變量,然後(hòu)在一個步驟中對(duì)該變量進(jìn)行測試的方法。它可以在許多常見情況下減少冗長(cháng)的代碼,例如檢查函數的返回值同時(shí)保留結果。

Positional-only parameters

最近對(duì) Python 語法的一個小而有用的新增功能(néng) positional-only parameters 允許你指明哪些函數參數必須指定爲位置參數,而不是關鍵字參數。這(zhè)樣做的基本原理通常包括提高代碼庫的清晰度和簡化代碼庫的未來開(kāi)發(fā),這(zhè)也是許多 Python 的其他新特性所關注的目标。

4、Python 測試

Python 有自己的内置測試框架 Unittest,雖然 Unittest 作爲默認設置還(hái)不錯,但它的設計和行爲已經(jīng)過(guò)時(shí)了。Pytest 框架已成(chéng)爲一種(zhǒng)常見的替代品,要更靈活(你可以在代碼的任何部分聲明測試,而不僅僅是一個子集),并且需要編寫的模闆少得多。另外,Pytest 還(hái)有大量的附加組件來擴展其功能(néng)(例如,用于測試異步代碼)。


來源:oschina