學習Python,怎能不懂點PEP呢图甜?

335@nirzar@short-fur-white-and-black-cat-on-green-textile.jpg

或許你是一個初入門Python的小白碍粥,完全不知道PEP是什么。又或許你是個學會了Python的熟手黑毅,見過幾個PEP嚼摩,卻不知道這玩意背后是什么。那正好,本文將系統(tǒng)性地介紹一下PEP枕面,與大家一起加深對PEP的了解愿卒。

目前,國內(nèi)各類教程不可勝數(shù)潮秘,雖然或多或少會提及PEP琼开,但籠統(tǒng)者多、局限于某個PEP者多枕荞,能夠詳細而全面地介紹PEP的文章并不多柜候。

本文的目的是:盡量全面地介紹PEP是什么,告訴大家為什么要去閱讀PEP躏精,以及列舉了一些我認為是必讀的PEP渣刷,最后,則是搜羅了幾篇PEP的中文翻譯矗烛,希望能為Python學習資料的漢化辅柴,做點拋磚引玉的貢獻。

PEP是什么高诺?

PEP的全稱是Python Enhancement Proposals碌识,其中Enhancement是增強改進的意思,Proposals則可譯為提案或建議書虱而,所以合起來筏餐,比較常見的翻譯是Python增強提案Python改進建議書

我個人傾向于前一個翻譯牡拇,因為它更貼切魁瞪。Python核心開發(fā)者主要通過郵件列表討論問題、提議惠呼、計劃等导俘,PEP通常是匯總了多方信息,經(jīng)過了部分核心開發(fā)者review和認可剔蹋,最終形成的正式文檔旅薄,起到了對外公示的作用,所以我認為翻譯成“提案”更恰當泣崩。

PEP的官網(wǎng)是:https://www.python.org/dev/peps/少梁,這也就是PEP 0 的地址。其它PEP的地址是將編號拼接在后面矫付,例如:https://www.python.org/dev/peps/pep-0020/ 就是PEP 20 的鏈接凯沪,以此類推。

第一個PEP誕生于2000年买优,現(xiàn)在正好是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)煤蹭,是數(shù)量最多的提案。例如我之前推文《詳解Python拼接字符串的七種方式》提到過的f-string方式取视,它出自PEP 498(Literal String Interpolation硝皂,字面字符串插值)。

每個PEP最初都是一個草案(Draft)作谭,隨后會經(jīng)歷一個過程稽物,因此也就出現(xiàn)了不同的狀態(tài)。以下是一個流程圖:

<figure style="font-size: inherit; color: inherit; line-height: inherit; margin: 0px; padding: 0px;">
PEP process flow diagram

<figcaption style="line-height: inherit; margin: 0px; padding: 0px; margin-top: 10px; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">PEP process flow diagram</figcaption>

</figure>

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贝或,你可以按序號、按類型以及按狀態(tài)進行檢索锐秦。而在PEP 1(PEP Purpose and Guidelines)里咪奖,官方詳細說明了PEP的意圖、如何提交PEP酱床、如何修復和更新PEP羊赵、以及PEP評審的機制等等。

為什么要讀PEP扇谣?

無論你是剛?cè)腴TPython的小白昧捷、有一定經(jīng)驗的從業(yè)人員,還是資深的黑客揍堕,都應該閱讀Python增強提案料身。

依我之見,閱讀PEP至少有如下好處:

(1)了解Python有哪些特性衩茸,它們與其它語言特性的差異芹血,為什么要設計這些特性,是怎么設計的,怎樣更好地運用它們幔烛;

(2)跟進社區(qū)動態(tài)啃擦,獲知業(yè)內(nèi)的最佳實踐方案,調(diào)整學習方向饿悬,改進工作業(yè)務的內(nèi)容令蛉;

(3)參與熱點議題討論,或者提交新的PEP狡恬,為Python社區(qū)貢獻力量珠叔。

說到底,學會用Python編程弟劲,只是掌握了皮毛祷安。PEP提案是深入了解Python的途徑,是真正掌握Python語言的一把鑰匙兔乞,也是得心應手使用Python的一本指南汇鞭。

哪些PEP是必讀的?

如前所述庸追,PEP提案已經(jīng)累積產(chǎn)生了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編碼規(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對象的身份迷思:從全體公民到萬物皆數(shù)》)
PEP 289 -- Generator Expressions谦去,生成器表達式
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,表達式內(nèi)賦值(最具爭議)
PEP 3105 -- Make print a function药有,print改為函數(shù)
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開發(fā)
PEP 8000 -- Python Language Governance Proposal Overview苇经,GvR老爹推出決策層后,事關新決策方案

關于PEP羊苟,知乎上有兩個問題塑陵,推薦大家關注:哪些PEP值得閱讀(https://dwz.cn/7CHMBlLu)感憾,如何看待PEP 572(https://dwz.cn/L46jpzMB)蜡励。

對PEP的貢獻

雖無確切數(shù)據(jù)作證,我國Python開發(fā)者的數(shù)量應該比任何國家都多阻桅。然而凉倚,縱觀PEP 0 里面列舉的200多個PEP作者,我只看到了一個像是漢語拼音的國人名字(不排除看漏嫂沉,或者使用了英文名的)稽寒。反差真是太大了。

我特別希望趟章,國內(nèi)的Python黑客們的名字杏糙,能越來越多地出現(xiàn)在那個列表里,出現(xiàn)在Python核心開發(fā)者的列表里蚓土。

此外宏侍,關于對PEP的貢獻,還有一種很有效的方式蜀漆,就是將PEP翻譯成中文谅河,造福國內(nèi)的Python學習社區(qū)。經(jīng)過一番搜索确丢,我還沒有看到系統(tǒng)性翻譯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

最后褂始,表達一下我的私心:

(1)希望本文能給大家?guī)碇R和見識的增長,激發(fā)一些小伙伴的學習熱情

(2)希望有小伙伴去翻譯更多的PEP描函,造福Python的中文學習社區(qū)


本文原創(chuàng)并首發(fā)于微信公眾號【Python貓】崎苗,后臺回復“愛學習”搂赋,免費獲得20+本精選電子書。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末益缠,一起剝皮案震驚了整個濱河市脑奠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌幅慌,老刑警劉巖宋欺,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辩尊,死亡現(xiàn)場離奇詭異泻蚊,居然都是意外死亡雾棺,警方通過查閱死者的電腦和手機松蒜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門篱瞎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蚊夫,“玉大人摊鸡,你說我怎么就攤上這事谴餐∩” “怎么了但汞?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長互站。 經(jīng)常有香客問我私蕾,道長,這世上最難降的妖魔是什么胡桃? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任踩叭,我火速辦了婚禮,結(jié)果婚禮上翠胰,老公的妹妹穿的比我還像新娘容贝。我一直安慰自己,他們只是感情好之景,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布斤富。 她就那樣靜靜地躺著,像睡著了一般闺兢。 火紅的嫁衣襯著肌膚如雪茂缚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天屋谭,我揣著相機與錄音脚囊,去河邊找鬼。 笑死桐磁,一個胖子當著我的面吹牛悔耘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播我擂,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼衬以,長吁一口氣:“原來是場噩夢啊……” “哼缓艳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起看峻,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤阶淘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后互妓,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溪窒,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年冯勉,在試婚紗的時候發(fā)現(xiàn)自己被綠了澈蚌。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡灼狰,死狀恐怖宛瞄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情交胚,我是刑警寧澤份汗,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站承绸,受9級特大地震影響裸影,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜军熏,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卷扮。 院中可真熱鬧荡澎,春花似錦、人聲如沸晤锹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鞭铆。三九已至或衡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間车遂,已是汗流浹背封断。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留舶担,地道東北人坡疼。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像衣陶,于是被迫代替她去往敵國和親柄瑰。 傳聞我的和親對象是個殘疾皇子闸氮,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容