???? “Python貓” ,一個值得加星標的公衆號
花下貓語:我曾寫過一篇較爲詳盡地介紹 PEP 的文章,後來因興趣使然,陸續翻譯過幾篇,還在 Github 上建了個項目,也獲得了小小的關注。前幾天偶然又發現一篇介紹 PEP 入門的文章,特分享給大家!
來源:luanhz@小數志公衆號
劇照 | 《小婦人》
導讀:如果你是一個python初學者,那麼可能聽過編碼規範這一說;如果你是一個python老鳥,那麼可能知道有很多PEP文檔,但可能也缺乏系統瞭解;如果你是一個python大神,那麼請你參與到PEP制定進程當中……本文是一篇關於PEP的入門介紹,旨在讓廣大pythoners快速認識PEP。
01 何爲PEP
PEP,全稱Python Enhancement Proposal,一般譯爲python增強提案,是一套關於Python百科全書式指南,全面記載python版本升級的完整紀實,幾乎所有python的疑問都能在PEP中予以解答或者至少找到參考——是的,這就是一份python白皮書。
2000年7月13日PEP0創建,至今剛好是第20個年頭,已發展成爲幾百個PEP提案。其中,不僅僅是python編程規範標準,更全面記載了pythoners關於改進研發python的提議、討論,還有python版本的更新週期計劃,可以說無論是python入門初學還是資深極客,都能深饗其中、受益良多。
02 PEP信息介紹
一份PEP提案包括摘要和正文兩部分,其中典型的摘要至少包括7個信息:分別是PEP編號、標題、最後修訂日期、作者、狀態、類型和創建日期,正文結構和內容則依不同PEP類型而異。
PEP0——關於PEPs的索引
簡要介紹幾個摘要信息字段:
PEP編號:PEP提案的文檔序號,爲1-4位數字。曾經試圖從PEP編號來判斷一份文檔的類型,但後來發現這個編號幾乎毫無規律可言,僅僅由其作者進行命名。
雖然編號毫無規律(主要是按照創建時間先後順序編號),但也有一些大的編號原則,例如:
PEP0-12,元PEP,關於PEP的PEP介紹
PEP200,python2.0版本
PEP3000-PEP3999,python3.0版本相關提案,其中PEP3000-3099又是python3000的元PEP
PEP8000+,python之父龜叔退出決策層後的決策進程
PEP編號一旦指定則"終身"不能修改,即使是該提案廢棄也不回收編號。另外,有的PEP編號也被保留以作未來使用,目前PEP801是唯一一個保留編號。
Status:狀態,一份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,撤回提案
Type:類型,PEP文檔主要分爲三類,
I - Informational PEP,資訊類
P - Process PEP,進程類
S - Standards Track PEP,標準類
所以,推薦學習的PEP文檔一般是A狀態和F狀態,其次是D和P狀態。當然,閱讀其他狀態的PEP文檔也能拓展對python開發歷程和大佬們思想鬥爭的瞭解。
其中,標準類提案佔比最大,涵蓋了python語法、標準和編程規範的行爲指南;資訊類用於宣佈python的一些大的改進計劃,如各個大版本發佈前都會有一個Release Schedule(版本週期)的PEP;進程類,python之外的一些信息,例如:PEP 581 -- Using GitHub Issues for CPython。
03 閱讀PEP渠道
查閱PEP官方文檔的渠道主要有2種,一個是python官方主頁,另一個是python GitHub倉庫。
python官方主頁,通過開發者指南(Python Developer’s Guide)鏈接可以跳轉到PEP0索引頁,進而可以通過目錄查找所有PEP信息。
python官方主頁中PEPs目錄
官方主頁中,給出了2種索引目錄形式,一個是按分類索引,即按照PEP狀態信息進行分類,例如Accepted、Finished等等;另一個是按照PEP編號索引,純粹是按照編號序列進行排布。在每個索引目錄中,可以通過類型和狀態字縮寫來迅速瞭解一份PEP文檔狀態,從而判斷是否有必要閱讀。
PEP596給出了python3.9版本週期
PEP597明確windows系統默認使用UTF-8編碼
另一個查閱PEP文檔的渠道是python的官方GitHub倉庫,與官方主頁文檔同步,如果是GitHub愛好者也可選擇在這裏查閱。
PEP倉庫目前有288位貢獻者、8294次提交
另外,除了python官方渠道,國內也有很多python愛好者將一些重要的PEP文檔翻譯成中文(包括GitHub上也有PEP漢譯文檔倉庫),可供入門學習,只是目前數量還比較少。
04 必讀PEP推薦
如果想變得更加pythonic,那麼有些PEP幾乎是必讀的。以下列出了幾個非常重要的PEP文檔(排名區分先後):
PEP0,全面介紹PEPs
PEP8,python編程規範,詳細介紹了一份可讀性好的python程序應該具備怎樣的編程規範
PEP20,python之禪,一共20條語句,可通過任何python終端輸入"import this"打印顯示,是python世界崇尚的方法論和價值觀
PEP328,python模塊導入規範,明確絕對/相對導入、多行導入的問題
PEP257,python文檔註釋規範
PEP3099,瞭解python3.0版本中那些被否決的提案,比如隱藏類方法中的self參數(類似其他語言中不顯示給出)、重命名lambda匿名函數等等
Python x.x Release Schedule,持續跟蹤python版本最新進程
其他感興趣的python特性PEP文檔
05 參與PEP提案
PEP不是開發者的專享,而是面向所有pythoners開放。在PEP1中給出了參與PEP制定的工作流程:
在GitHub上Folk PEP倉庫,創建一個草案(編號暫定爲9999)
選擇PEP類型(資訊類、標準類、進程類),狀態爲Draft
參照PEP12中的PEP書寫規範,向官方倉庫提交一個pull request
PEP編輯審閱提交的PEP文檔
一旦提交被接受,則分配一個正式的PEP編號,意味着在python改進升級的歷史進程留下自己的足跡
當然,真正能成爲PEP的一名作者並不容易,但倘若真的有興趣也有實力,那麼貢獻一個PEP提案真是一件值得稱耀的事情。
06 總結
本文面向python初學者對PEP進行基本介紹,包括PEP信息分類、查閱PEP渠道和幾個必讀PPE文檔等信息,旨在使初學者儘快入門和學習PEP相關文檔信息
PEP是python的一系列增強提案文檔,始於2000年,全面涵蓋各類python信息,包括版本計劃、語法特性、編碼風格規範等
PEP文檔分爲資訊、標準和進程3類提案
PEP文檔具有時效性,其狀態包括草案、臨時、有效、替代和廢棄等
PEP文檔是提高對python理解和運用的不二選擇
任何pythoner都可以參與貢獻PEP文檔,如果被採納值得稱耀
注:點擊閱讀原本進入PEP首頁
優質文章,推薦閱讀:
感謝創作者的好文