Linux中國

為什麼 Python 代碼要寫得美觀而明確

早在 1999 年,Python 的貢獻者之一,Tim Peters 就提出了《Python 之禪》,直到二十年後的今天,《Python 之禪》中的 19 條原則仍然對整個社區都產生著深遠的影響。為此,就像慶典光明的 光明節 Hanukkah 一樣,我們舉行了這一次的「 Python 光明節 Pythonukkah 」。首先,我們會討論《Python 之禪》中的前兩個原則:美觀和明確。

「Hanukkah is the Festival of Lights,

Instead of one day of presents, we get eight crazy nights.」

—亞當·桑德勒,光明節之歌

美觀勝於醜陋 Beautiful is better than ugly

著名的《 計算機程序的構造和解釋 Structure and Interpretation of Computer Programs 》中有這麼一句話: 代碼是寫給人看的,只是恰好能讓機器運行。 Programs must be written for people to read and only incidentally for machines to execute. 機器並不在乎代碼的美觀性,但人類在乎。

閱讀美觀的代碼對人們來說是一種享受,這就要求在整套代碼中保持一致的風格。使用諸如 Blackflake8Pylint 這一類工具能夠有效地接近這一個目標。

但實際上,只有人類自己才知道什麼才是真正的美觀。因此,代碼審查和協同開發是其中的不二法門,同時,在開發過程中傾聽別人的意見也是必不可少的。

最後,個人的主觀能動性也很重要,否則一切工具和流程都會變得毫無意義。只有意識到美觀的重要性,才能主動編寫出美觀的代碼。

這就是為什麼美觀在眾多原則當中排到了首位,它讓「美」成為了 Python 社區的一種價值。如果有人要問,」我們真的在乎美嗎?「社區會以代碼給出肯定的答案。

明確勝於隱晦 Explicit is better than implicit

人類會歡慶光明、懼怕黑暗,那是因為光能夠讓我們看到難以看清的事物。同樣地,儘管有些時候我們會不自覺地把代碼寫得含糊不清,但明確地編寫代碼確實能夠讓我們理解很多抽象的概念。

「為什麼類方法中要將 self 顯式指定為第一個參數?」

這個問題已經是老生常談了,但網路上很多流傳已久的回答都是不準確的。在編寫 元類 metaclass 時,顯式指定 self 參數就顯得毫無意義。如果你沒有編寫過元類,希望你可以嘗試一下,這是很多 Python 程序員的必經之路。

顯式指定 self 參數的原因並不是 Python 的設計者不想將這樣的元類視為「默認」元類,而是因為第一個參數必須是顯式的。

即使 Python 中確實允許非顯式的情況存在(例如上下文變數),但我們還是應該提出疑問:某個東西是不是有存在的必要呢?如果非顯式地傳遞參數會不會出現問題呢?有些時候,由於種種原因,這是會有問題的。總之,在寫代碼時一旦能夠優先考慮到明確性,至少意味著能對不明確的地方提出疑問並對結果作出有效的估計。

via: https://opensource.com/article/19/12/zen-python-beauty-clarity

作者:Moshe Zadka 選題:lujun9972 譯者:HankChow 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

    More in:Linux中國

    Linux中國

    捐贈 Let's Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...