或許你是一個初入門 Python 的小白,完全不知道 PEP 是什么,又或許你是個學會了 Python 的熟手,見過幾個 PEP,卻不知道這玩意背后是什么,那正好,本文將系統性地介紹一下 PEP,與大家一起加深對 PEP 的了
目前,國內各類教程不可勝數,雖然或多或少會提及 PEP,但籠統者多、局限于某個 PEP 者多,能夠詳細而全面地介紹 PEP 的文章并不多,
本文的目的是:盡量全面地介紹 PEP 是什么,告訴大家為什么要去閱讀 PEP,以及列舉了一些我認為是必讀的 PEP,最后,則是搜羅了幾篇 PEP 的中文翻譯,希望能為 Python 學習資料的漢化,做點拋磚引玉的貢獻,
PS:另外很多人在學習Python的程序中,往往因為沒人指導或者系統的教程從而導致自己容易放棄,為此我建了個Python全堆疊開發交流.裙 :一久武其而而流一思(數字的諧音)轉換下可以找到了,里面有最新Python教程專案可拿,不懂的問題有老司機解決哦,一起相互監督共同進步
PEP 是什么?
PEP 的全稱是 Python Enhancement Proposals,其中 Enhancement 是增強改進的意思,Proposals 則可譯為提案或建議書,所以合起來,比較常見的翻譯是 Python增強提案或 Python改進建議書,
我個人傾向于前一個翻譯,因為它更貼切,Python 核心開發者主要通過郵件串列討論問題、提議、計劃等,PEP 通常是匯總了多方資訊,經過了部分核心開發者 review 和認可,最終形成的正式檔案,起到了對外公示的作用,所以我認為翻譯成 “提案” 更恰當,
PEP 的官網是:https://www.python.org/dev/peps/,這也就是 PEP 0 的地址,其它 PEP 的地址是將編號拼接在后面,例如:https://www.python.org/dev/peps/pep-0020/ 就是 PEP 20 的鏈接,以此類推,
第一個 PEP 誕生于 2000 年,現在正好是 18 歲成年,到目前為止,它擁有 478 個 “兄弟姐妹”,
官方將 PEP 分成三類:
I - Informational PEP
P - Process PEP
S - Standards Track PEP
其含義如下:
資訊類:這類 PEP 就是提供資訊,有告知類資訊,也有指導類資訊等等,例如 PEP 20(The Zen of Python,即著名的 Python 之禪)、PEP 404 (Python 2.8 Un-release Schedule,即宣告不會有 Python2.8 版本),
流程類:這類 PEP 主要是 Python 本身之外的周邊資訊,例如 PEP 1(PEP Purpose and Guidelines,即關于 PEP 的指南)、PEP 347(Migrating the Python CVS to Subversion,即關于遷移 Python 代碼倉),
標準類:這類 PEP 主要描述了 Python 的新功能和新實踐(implementation),是數量最多的提案,例如我之前推文《詳解 Python 拼接字串的七種方式》提到過的 f-string 方式,它出自 PEP 498(Literal String Interpolation,字面字串插值),
每個 PEP 最初都是一個草案(Draft),隨后會經歷一個程序,因此也就出現了不同的狀態,以下是一個流程圖:
A – Accepted (Standards Track only) or Active proposal 已接受(僅限標準跟蹤)或有效提案
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,你可以按序號、按型別以及按狀態進行檢索,而在 PEP 1(PEP Purpose and Guidelines)里,官方詳細說明了 PEP 的意圖、如何提交 PEP、如何修復和更新 PEP、以及 PEP 評審的機制等等,
為什么要讀 PEP?
無論你是剛入門 Python 的小白、有一定經驗的從業人員,還是資深的黑客,都應該閱讀 Python 增強提案,
依我之見,閱讀 PEP 至少有如下好處:
(1)了解 Python 有哪些特性,它們與其它語言特性的差異,為什么要設計這些特性,是怎么設計的,怎樣更好地運用它們;
(2)跟進社區動態,獲知業內的最佳實踐方案,調整學習方向,改進作業業務的內容;
(3)參與熱點議題討論,或者提交新的 PEP,為 Python 社區貢獻力量,
說到底,學會用 Python 編程,只是掌握了皮毛,PEP 提案是深入了解 Python 的途徑,是真正掌握 Python 語言的一把鑰匙,也是得心應手使用 Python 的一本指南,
哪些 PEP 是必讀的?
如前所述,PEP 提案已經累積產生了 478 個,我們并不需要對每個 PEP 都熟知,沒有必要,下面,我列舉了一些 PEP,推薦大家一讀:
PEP 0 -- Index of Python Enhancement Proposals
PEP 7 -- Style Guide for C Code,C 擴展
PEP 8 -- Style Guide for Python Code,Python 編碼規范(必讀)
PEP 20 -- The Zen of Python,Python 之禪
PEP 202 -- List Comprehensions,串列生成式
PEP 274 -- Dict Comprehensions,字典生成式
PEP 234 -- Iterators,迭代器
PEP 257 -- Docstring Conventions,檔案注釋規范
PEP 279 -- The enumerate () built-in function,enumerate 列舉
PEP 282 -- A Logging System,日志模塊
PEP 285 -- Adding a bool type,布林值(建議閱讀《Python 物件的身份迷思:從全體公民到萬物皆數》)
PEP 289 -- Generator Expressions,生成器運算式
PEP 318 -- Decorators for Functions and Methods,裝飾器
PEP 342 -- Coroutines via Enhanced Generators,協程
PEP 343 -- The "with" Statement,with 陳述句
PEP 380 -- Syntax for Delegating to a Subgenerator,yield from 語法
PEP 405 -- Python Virtual Environments,虛擬環境
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,運算式內賦值(最具爭議)
PEP 3105 -- Make print a function,print 改為函式
PEP 3115 -- Metaclasses in Python 3000,元類
PEP 3120 -- Using UTF-8 as the default source encoding,默認 UTF-8
PEP 3333 -- Python Web Server Gateway Interface v1.0.1,Web 開發
PEP 8000 -- Python Language Governance Proposal Overview,GvR 老爹推出決策層后,事關新決策方案
關于 PEP,知乎上有兩個問題,推薦大家關注:哪些 PEP 值得閱讀(https://dwz.cn/7CHMBlLu),如何看待 PEP572(https://dwz.cn/L46jpzMB),
對 PEP 的貢獻
雖無確切資料作證,我國 Python 開發者的數量應該比任何國家都多,然而,縱觀 PEP 0 里面列舉的 200 多個 PEP 作者,我只看到了一個像是漢語拼音的國人名字(不排除看漏,或者使用了英文名的),反差真是太大了,
我特別希望,國內的 Python 黑客們的名字,能越來越多地出現在那個串列里,出現在 Python 核心開發者的串列里,
此外,關于對 PEP 的貢獻,還有一種很有效的方式,就是將 PEP 翻譯成中文,造福國內的 Python 學習社區,經過一番搜索,我還沒有看到系統性翻譯 PEP 的專案,只找到了零星的對于某個 PEP 的翻譯,
我用心搜集了幾篇中文翻譯成果,分享給大家:
PEP8 https://dwz.cn/W01HexFD
PEP257 https://dwz.cn/JLctlNLC
PEP328 https://dwz.cn/4vCQJpEP
PEP333 https://dwz.cn/TAXIZdzc
PEP484 https://dwz.cn/dSLZgg5B
PEP492 http://t.cn/EALeaL0
PEP541 https://dwz.cn/ce98vc27
PEP3107 http://suo.im/4xFESR
PEP3333 https://dwz.cn/si3xylgw
最后,表達一下我的私心:希望本文能給大家帶來知識和見識的增長,激發一些小伙伴的學習熱情,另外很多人在學習Python的程序中,往往因為沒人指導或者系統的教程從而導致自己容易放棄,為此我建了個Python全堆疊開發交流.裙 :一久武其而而流一思(數字的諧音)轉換下可以找到了,里面有最新Python教程專案可拿,不懂的問題有老司機解決哦,一起相互監督共同進步
本文的文字及圖片來源于網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/198237.html
標籤:Python
上一篇:Python爬蟲之Scrapy
下一篇:工齡計算方案
