
作者:豌豆花下貓
來源:Python貓
或許你是一個(gè)初入門Python的小白,完全不知道PEP是什么。又或許你是個(gè)學(xué)會(huì)了Python的熟手,見過幾個(gè)PEP,卻不知道這玩意背后是什么。那正好,本文將系統(tǒng)性地介紹一下PEP,與大家一起加深對(duì)PEP的了解。
目前,國內(nèi)各類教程不可勝數(shù),雖然或多或少會(huì)提及PEP,但籠統(tǒng)者多、局限于某個(gè)PEP者多,能夠詳細(xì)而全面地介紹PEP的文章并不多。
本文的目的是:盡量全面地介紹PEP是什么,告訴大家為什么要去閱讀PEP,以及列舉了一些我認(rèn)為是必讀的PEP,最后,則是搜羅了幾篇PEP的中文翻譯,希望能為Python學(xué)習(xí)資料的漢化,做點(diǎn)拋磚引玉的貢獻(xiàn)。
PEP是什么?
PEP的全稱是python Enhancement Proposals,其中Enhancement是增強(qiáng)改進(jìn)的意思,Proposals則可譯為提案或建議書,所以合起來,比較常見的翻譯是Python增強(qiáng)提案或Python改進(jìn)建議書。
我個(gè)人傾向于前一個(gè)翻譯,因?yàn)樗N切。Python核心開發(fā)者主要通過郵件列表討論問題、提議、計(jì)劃等,PEP通常是匯總了多方信息,經(jīng)過了部分核心開發(fā)者review和認(rèn)可,最終形成的正式文檔,起到了對(duì)外公示的作用,所以我認(rèn)為翻譯成“提案”更恰當(dāng)。
PEP的官網(wǎng)是:https://www.python.org/dev/peps/,這也就是PEP 0 的地址。其它PEP的地址是將編號(hào)拼接在后面,例如:https://www.python.org/dev/peps/pep-0020/ 就是PEP 20 的鏈接,以此類推。
第一個(gè)PEP誕生于2000年,現(xiàn)在正好是18歲成年。到目前為止,它擁有478個(gè)“兄弟姐妹”。
官方將PEP分成三類:
I - Informational PEP
P - Process PEP
S - Standards Track PEP
其含義如下:
信息類:這類PEP就是提供信息,有告知類信息,也有指導(dǎo)類信息等等。例如PEP 20(The Zen of Python,即著名的Python之禪)、PEP 404 (Python 2.8 Un-release Schedule,即宣告不會(huì)有Python2.8版本)。
流程類:這類PEP主要是Python本身之外的周邊信息。例如PEP 1(PEP Purpose and Guidelines,即關(guān)于PEP的指南)、PEP 347(Migrating the Python CVS to Subversion,即關(guān)于遷移Python代碼倉)。
標(biāo)準(zhǔn)類:這類PEP主要描述了Python的新功能和新實(shí)踐(implementation),是數(shù)量最多的提案。例如我之前推文《詳解Python拼接字符串的七種方式》提到過的f-string方式,它出自PEP 498(Literal String Interpolation,字面字符串插值)。
每個(gè)PEP最初都是一個(gè)草案(Draft),隨后會(huì)經(jīng)歷一個(gè)過程,因此也就出現(xiàn)了不同的狀態(tài)。以下是一個(gè)流程圖:
PEP process flow diagram
A – Accepted (Standards Track only) or Active proposal 已接受(僅限標(biāo)準(zhǔn)跟蹤)或有效提案
D – Deferred proposal 延期提案
F – Final proposal 最終提案
P – Provisional proposal 暫定提案
R – Rejected proposal 被否決的提案
S – Superseded proposal 被取代的提案
W – Withdrawn proposal 撤回提案
在PEP 0(Index of Python Enhancement Proposals (PEPs))里,官方列舉了所有的PEP,你可以按序號(hào)、按類型以及按狀態(tài)進(jìn)行檢索。而在PEP 1(PEP Purpose and Guidelines)里,官方詳細(xì)說明了PEP的意圖、如何提交PEP、如何修復(fù)和更新PEP、以及PEP評(píng)審的機(jī)制等等。
為什么要讀PEP?
無論你是剛?cè)腴Tpython的小白、有一定經(jīng)驗(yàn)的從業(yè)人員,還是資深的黑客,都應(yīng)該閱讀Python增強(qiáng)提案。
依我之見,閱讀PEP至少有如下好處:
(1)了解Python有哪些特性,它們與其它語言特性的差異,為什么要設(shè)計(jì)這些特性,是怎么設(shè)計(jì)的,怎樣更好地運(yùn)用它們;
(2)跟進(jìn)社區(qū)動(dòng)態(tài),獲知業(yè)內(nèi)的最佳實(shí)踐方案,調(diào)整學(xué)習(xí)方向,改進(jìn)工作業(yè)務(wù)的內(nèi)容;
(3)參與熱點(diǎn)議題討論,或者提交新的PEP,為Python社區(qū)貢獻(xiàn)力量。
說到底,學(xué)會(huì)用Python編程,只是掌握了皮毛。PEP提案是深入了解Python的途徑,是真正掌握Python語言的一把鑰匙,也是得心應(yīng)手使用Python的一本指南。
哪些PEP是必讀的?
如前所述,PEP提案已經(jīng)累積產(chǎn)生了478個(gè),我們并不需要對(duì)每個(gè)PEP都熟知,沒有必要。下面,我列舉了一些PEP,推薦大家一讀:
PEP 0 -- Index of Python Enhancement Proposals
PEP 7 -- Style Guide for C Code,C擴(kuò)展
PEP 8 -- Style Guide for Python Code,編碼規(guī)范(必讀)
PEP 20 -- The Zen of Python,Python之禪
PEP 202 -- List Comprehensions,列表生成式
PEP 274 -- Dict Comprehensions,字典生成式
PEP 234 -- Iterators,迭代器
PEP 257 -- Docstring Conventions,文檔注釋規(guī)范
PEP 279 -- The enumerate() built-in function,enumerate枚舉
PEP 282 -- A Logging System,日志模塊
PEP 285 -- Adding a bool type,布爾值(建議閱讀《Python對(duì)象的身份迷思:從全體公民到萬物皆數(shù)》)
PEP 289 -- Generator Expressions,生成器表達(dá)式
PEP 318 -- Decorators for Functions and Methods,裝飾器
PEP 342 -- Coroutines via Enhanced Generators,協(xié)程
PEP 343 -- The "with" Statement,with語句
PEP 380 -- Syntax for Delegating to a Subgenerator,yield from語法
PEP 405 -- Python Virtual Environments,虛擬環(huán)境
PEP 471 -- os.scandir() function,遍歷目錄
PEP 484 -- Type Hints,類型約束
PEP 492 -- Coroutines with async and await syntax,async/await語法
PEP 498 -- Literal String Interpolation Python,字符串插值
PEP 525 -- Asynchronous Generators,異步生成器
PEP 572 -- Assignment Expressions,表達(dá)式內(nèi)賦值(最爭(zhēng)議)
PEP 3105 -- Make print a function,print改為函數(shù)
PEP 3115 -- Metaclasses in Python 3000,元類
PEP 3120 -- Using UTF-8 as the default source encoding
PEP 3333 -- Python Web Server Gateway Interface v1.0.1,Web開發(fā)
PEP 8000 -- Python Language Governance Proposal Overview,GvR老爹推出決策層后,事關(guān)新決策方案
對(duì)PEP的貢獻(xiàn)
雖無確切數(shù)據(jù)作證,我國Python開發(fā)者的數(shù)量應(yīng)該比任何國家都多。然而,縱觀PEP 0 里面列舉的200多個(gè)PEP作者,我只看到了一個(gè)像是漢語拼音的國人名字(不排除看漏,或者使用了英文名的)。反差真是太大了。
我特別希望,國內(nèi)的Python黑客們的名字,能越來越多地出現(xiàn)在那個(gè)列表里,出現(xiàn)在Python核心開發(fā)者的列表里。
此外,關(guān)于對(duì)PEP的貢獻(xiàn),還有一種很有效的方式,就是將PEP翻譯成中文,造福國內(nèi)的python學(xué)習(xí)社區(qū)。經(jīng)過一番搜索,我還沒有看到系統(tǒng)性翻譯PEP的項(xiàng)目,只找到了零星的對(duì)于某個(gè)PEP的翻譯。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場(chǎng)景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對(duì)象的 text 與 content:區(qū)別、場(chǎng)景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請(qǐng)求開發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請(qǐng)求工具對(duì)比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請(qǐng)求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營問題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場(chǎng)景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡(jiǎn)單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10