Python 爲何用 # 號做註釋符?

關於編程語言中的註釋,其重要性基本上已爲你們所共識。shell

然而關於註釋的規範,這個話題就像咱們以前聊過的縮進、終止符和命名方式同樣,衆口難調。編程

註釋符一般可分爲兩種,即行註釋與塊註釋(inline/block),它們在不一樣的編程語言中的符號可謂讓人眼花繚亂。less

好比行註釋符,它至少有如下的 17 種之多(出自維基百科):編程語言

其中兩個最大的陣營分別是「//」與「#」號:ide

  • // 註釋符:ActionScript, C (C99), C++, C#, D, F#, Go, Java, JavaScript, Kotlin, Object Pascal (Delphi), Objective-C, PHP, Rust, Scala, SASS, Swift, Xojo
  • # 註釋符:Bourne shell and other UNIX shells, Cobra, Perl, Python, Ruby, Seed7, Windows PowerShell, PHP, R, Make, Maple, Elixir, Nim

那麼,**Python 爲何用「#」號做註釋符,而不是「//」呢? **函數

這個問題恐怕沒辦法從解析的效率、符號的辨識度和輸入的便利性等方面回答,由於它們基本上沒有區別。ui

我沒有找到官方的解釋,可是從這些註釋符的陣營中,已經不可貴出一個較爲合理的解釋:spa

  • // 註釋符基本上被 C 語言家族所用翻譯

  • # 註釋符則基本上是被 Shell 和其它腳本語言所用設計

Python 在創造之初,從 C 和 Shell 語言中借鑑了很多東西,但它是一種腳本語言,所以在註釋符這個最爲基礎的語言要素上,就偏向了腳本語言的傳統。

在某些「類腳本語言」中,好比 yaml、conf 和 ini 等格式的配置文件,它們大多也是採用腳本語言的「#」號做爲註釋符。

因此,Python 行內註釋符的選擇,大概能夠歸結爲一種歷史緣由,即借鑑了 Shell 腳本語言的寫法。

相比於行註釋符的多樣,塊註釋符更加是讓人眼花繚亂:

大多數寫法是我從未見過的,有些甚至是難以忍受的,槽點太多!

在這份表格裏,咱們看不到 Python,由於從嚴格意義上講,Python 並無塊註釋符!

通常而言,咱們在連續的每行內容前面加「#」號,達到塊註釋的效果。塊註釋被看做是多個行註釋。

PEP-8 中是這麼建議的:

Each line of a block comment starts with a # and a single space (unless it is indented text inside the comment).

有人曾在 Twitter 上發問,爲何 Python 沒有塊註釋符?

Guido 回覆稱,能夠將多行字符串用做塊註釋:

Python 的多行字符串用三對單引號或雙引號表示,它還能夠用做文檔字符串(即Documentation Strings,簡寫docstrings)。

可是,將它當作多行註釋符使用,在語義上則有點怪怪的——它表示的是一段字符串,雖然沒有賦值給變量,不會生成代碼,可是它並不是語義上的註釋。

因爲腳本語言的特性,它容許咱們寫一段「無根的字符串」,在語法上沒有問題,也沒有負做用(negative effects),可是,若是把它做爲註釋使用,這就是一種反作用(side effects)了。

從這點上考慮,我雖然不反對有人把多行字符串寫法用做塊註釋,可是我會更推薦你們使用「#」號做註釋。

另外,對於無用的代碼,最好的作法就是直接刪除,若是後續發現有須要,再回退修改。詳細的多行註釋儘可能放在文檔字符串中,這樣在覈心代碼中就會不多出現多行註釋的狀況了。

對於 Python 的註釋符用法,你們是怎麼想的呢?歡迎留言交流。

若是你以爲本文分析得不錯,那你應該會喜歡這些文章:

一、Python爲何使用縮進來劃分代碼塊?

二、Python 的縮進是否是反人類的設計?

三、Python 爲何不用分號做語句終止符?

四、Python 爲何沒有 main 函數?爲何我不推薦寫 main 函數?

五、Python 爲何推薦蛇形命名法?

六、Python 爲何不支持 i++ 自增語法,不提供 ++ 操做符?

七、Python 爲何只需一條語句「a,b=b,a」,就能直接交換兩個變量?

寫在最後:本文屬於「Python爲何」系列(Python貓出品),該系列主要關注 Python 的語法、設計和發展等話題,以一個個「爲何」式的問題爲切入點,試着展示 Python 的迷人魅力。若你有其它感興趣的話題,歡迎填在《Python的十萬個爲何? 》裏的調查問卷中。部分話題會推出視頻版,請在 B 站收看,觀看地址:視頻地址

公衆號【Python貓】, 本號連載優質的系列文章,有Python爲何系列、喵星哲學貓系列、Python進階系列、好書推薦系列、技術寫做、優質英文推薦與翻譯等等,歡迎關注哦。

相關文章
相關標籤/搜索