如何變得更加Pythonic?——一份關於PEP的入門指南

???? 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,撤回提案

    所以,推薦學習的PEP文檔一般是A狀態和F狀態,其次是D和P狀態。當然,閱讀其他狀態的PEP文檔也能拓展對python開發歷程和大佬們思想鬥爭的瞭解。

  • Type:類型,PEP文檔主要分爲三類,

    • I - Informational PEP,資訊類

    • P - Process PEP,進程類

    • S - Standards Track PEP,標準類

    其中,標準類提案佔比最大,涵蓋了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首頁

優質文章,推薦閱讀:

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

對比 C++ 和 Python,談談指針與引用

Python貓薦書之六:文也深度學習,理也深度學習

你真的知道Python的字符串怎麼用嗎?

感謝創作者的好文

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章