現(xiàn)代Python編程的四個(gè)關(guān)鍵點(diǎn)你知道幾個(gè)
作為一個(gè)誕生已有 30 余年的編程語言,Python 的流行度在近幾年迎來了爆炸性的增長。為了方便大家能夠更好的采用 Python,利用該語言中所有新的和強(qiáng)大的功能;InfoWorld 歸納總結(jié)了開發(fā)人員在 2022 年編寫現(xiàn)代 Python 時(shí)所需要理解的一些關(guān)鍵概念??偣菜膫€(gè)方面,具體如下:
1、Python 中的類型提示
Python 最近引入的類型提示語法允許 linter 和第三方代碼質(zhì)量工具在運(yùn)行前分析你的代碼,并在檢測出可能發(fā)生的錯(cuò)誤。你創(chuàng)建的 Python 代碼與他人共享的次數(shù)越多,大家就越有可能從使用類型提示中受益。Python 的每個(gè)后續(xù)版本都推出了更復(fù)雜、更強(qiáng)大的類型注解。如果你養(yǎng)成了在短期內(nèi)學(xué)習(xí)如何使用類型注解的習(xí)慣,那么就能夠更好地利用每一種新的類型提示創(chuàng)新。重要的是要記住類型提示是可選的,而不是必須的。不是每個(gè)項(xiàng)目都需要它們,類型提示可以使你的大項(xiàng)目變得易懂,但小項(xiàng)目卻并不必要。值得注意的是,雖然在運(yùn)行時(shí)不強(qiáng)制執(zhí)行類型提示,但你可以使用 Pydantic 來使之成為可能。許多廣泛使用的 Python 項(xiàng)目:如 FastAPI,都廣泛使用 Pydantic。
2、Python 虛擬環(huán)境和包管理
對(duì)于簡單的項(xiàng)目和要求不高的開發(fā)工作,通??梢灾皇褂?Python 的內(nèi)置venv工具將項(xiàng)目及其需求分開。但 Python 工具的最新進(jìn)展則為開發(fā)人員提供了更多選擇:
Pyenv
:如果你需要安裝多個(gè) Python 版本(3.8、3.9、3.10)以滿足不同的項(xiàng)目要求,Pyenv 允許你在每個(gè)項(xiàng)目的基礎(chǔ)上在它們之間進(jìn)行全局切換。值得注意的是,它沒有官方的 Windows 支持,但確實(shí)存在非官方的 Windows port。
Pipenv
:被稱為“Python dev workflow for humans
”,Pipenv 旨在管理虛擬環(huán)境以及項(xiàng)目的所有依賴項(xiàng)。它還確保依賴關(guān)系是確定性的 —— 你得到你想要的特定版本,并且它們以你要求的組合方式工作。但是,Pipenv 不涉及任何形式的打包,因此對(duì)于你最終想要上傳到 PyPI 或與他人共享的項(xiàng)目來說,它并不理想。
Poetry
:Poetry 擴(kuò)展了 Pipenv 的工具集,不僅可以管理項(xiàng)目和需求,還可以輕松地將項(xiàng)目部署到 PyPI。它還為你管理獨(dú)立于項(xiàng)目目錄的虛擬環(huán)境。
PDM
:PDM(“Python Development Master
”的縮寫)是這方面最新的前沿項(xiàng)目。與 Poetry 和 Pipenv 一樣,PDM 為你提供了一個(gè)用于設(shè)置項(xiàng)目、管理其依賴項(xiàng)以及從中構(gòu)建分發(fā)工件的單一界面。PDM 還使用 PEP 582 標(biāo)準(zhǔn)將包本地存儲(chǔ)到項(xiàng)目中,因此無需創(chuàng)建每個(gè)項(xiàng)目的虛擬環(huán)境。但是這個(gè)工具相對(duì)較新,所以在生產(chǎn)中采用它之前要確保它能暫時(shí)工作。
3、新的 Python 語法
Python 的發(fā)展意味著該語言本身增加了許多新功能。Python 最新的幾個(gè)版本中添加了一些有用的語法結(jié)構(gòu),使其更強(qiáng)大和更簡潔程。最近增加的一些內(nèi)容包括:Pattern matching最近最大的新增功能是結(jié)構(gòu)模式匹配,出現(xiàn)在 Python 3.10 中。它不僅僅是所謂的“switch/case for Python”,還可以讓你根據(jù)對(duì)象的內(nèi)容或結(jié)構(gòu)做出控制流決策。The ‘walrus operator’因其外觀 (:=) 而得名,在 Python 3.8 中添加的“walrus operator(海象操作符)”引入了賦值表達(dá)式,這是一種將一個(gè)值賦給一個(gè)變量,然后在一個(gè)步驟中對(duì)該變量進(jìn)行測試的方法。它可以在許多常見情況下減少冗長的代碼,例如檢查函數(shù)的返回值同時(shí)保留結(jié)果。Positional-only parameters最近對(duì) Python 語法的一個(gè)小而有用的新增功能 positional-only parameters 允許你指明哪些函數(shù)參數(shù)必須指定為位置參數(shù),而不是關(guān)鍵字參數(shù)。這樣做的基本原理通常包括提高代碼庫的清晰度和簡化代碼庫的未來開發(fā),這也是許多 Python 的其他新特性所關(guān)注的目標(biāo)。
4、Python 測試
Python 有自己的內(nèi)置測試框架 Unittest,雖然 Unittest 作為默認(rèn)設(shè)置還不錯(cuò),但它的設(shè)計(jì)和行為已經(jīng)過時(shí)了。Pytest 框架已成為一種常見的替代品,要更靈活(你可以在代碼的任何部分聲明測試,而不僅僅是一個(gè)子集),并且需要編寫的模板少得多。另外,Pytest 還有大量的附加組件來擴(kuò)展其功能(例如,用于測試異步代碼)。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
python自動(dòng)腳本的pyautogui入門學(xué)習(xí)
這篇文章主要介紹了python自動(dòng)腳本的pyautogui入門學(xué)習(xí),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04詳解python編程slice與indices函數(shù)用法示例
這篇文章主要介紹了詳解python編程中slice與indices使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2021-09-09tensorflow 用矩陣運(yùn)算替換for循環(huán) 用tf.tile而不寫for的方法
今天小編就為大家分享一篇tensorflow 用矩陣運(yùn)算替換for循環(huán) 用tf.tile而不寫for的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07使用python實(shí)現(xiàn)數(shù)組、鏈表、隊(duì)列、棧的方法
數(shù)據(jù)結(jié)構(gòu)是指相互之間存在著一種或多種關(guān)系的數(shù)據(jù)元素的集合和該集合中數(shù)據(jù)元素之間的關(guān)系組成。這篇文章主要介紹了使用python實(shí)現(xiàn)數(shù)組、鏈表、隊(duì)列、棧的相關(guān)知識(shí),需要的朋友可以參考下2019-12-12使用Python操作FTP實(shí)現(xiàn)上傳和下載的方法
今天小編就為大家分享一篇關(guān)于使用Python操作FTP實(shí)現(xiàn)上傳和下載的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-04-04