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. 機器並不在乎代碼的美觀性,但人類在乎。

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

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

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

這就是為什麼美觀在眾多原則當中排到了首位,它讓「美」成為了 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 的兩個中級證書 ...