Python 為什么拋棄累贅的花括號,使用縮進(jìn)來劃分代碼塊?

大家好,這是“Python為什么”系列節(jié)目的文字稿(文末有觀看地址)。

本期話題:Python 為什么使用縮進(jìn)來劃分代碼塊,而不像其它語言使用花括號 {} 或者 “end” 之類的語法?

Python 的縮進(jìn)是一個老生常談的話題,經(jīng)常有人會提及它,比如 Python 之父在上個月就恰好轉(zhuǎn)發(fā)過一篇文章:

image

因為這篇文章,Guido 還受邀在 Python Bytes 播客上錄制了一期節(jié)目:

image
image

那么,Python 為什么要用縮進(jìn)來劃分代碼塊呢?

我收集梳理了幾份材料,接下來將帶大家一起揭曉 Python 這么做的設(shè)計原因:

image
  1. 縮進(jìn)語法,更加優(yōu)雅
  2. 縮進(jìn)語法,更加清晰
  3. 使用縮進(jìn),保持一致性,避免造成誤讀
  4. 使用縮進(jìn),代碼更緊湊,便于瀏覽,沒有累贅
  5. 使用縮進(jìn),已足夠令解釋器執(zhí)行,沒必要使用多余的符號
  6. 強(qiáng)制縮進(jìn),源自古老的 ABC 語言,Guido 是這門語言的設(shè)計者之一
  7. 其思想可能出自 Don Knuth(高德納,著名計算機(jī)科學(xué)家,經(jīng)典巨著《計算機(jī)程序設(shè)計藝術(shù)》的作者),他在 1974 年提出,在當(dāng)時是很時髦和前衛(wèi)的思想
  8. 使用縮進(jìn),可以終結(jié)大括號放在函數(shù)名后面還是再換一行的終極爭論(據(jù)說此話題能令不同派系的程序員大打出手!)

以上羅列的原因主要來源于 Python 官方文檔、官方 wiki 以及 Python 之父的早期訪談。

image
image

總而言之,Python 使用縮進(jìn)語法,體現(xiàn)了它非常優(yōu)雅、清晰的設(shè)計美學(xué),對開發(fā)者、讀者以及解釋器,都極為友好。

實話說,我本人非常贊許 Python 的縮進(jìn),因此才第一眼就迷上了它,如果是使用了花括號之類的語法,那 Python 就頓時黯淡,也就食之無味了!

大家如何看待 Python 的縮進(jìn)語法呢?請在評論區(qū)發(fā)表你的看法吧!

參考材料:

1、Guido 發(fā)的 twitter:https://twitter.com/gvanrossum/status/1249549091584892928

2、Guido 轉(zhuǎn)發(fā)的關(guān)于縮進(jìn)的文章:https://web.archive.org/web/20070922223915/http://www.secnetix.de/~olli/Python/block_indentation.hawk

3、Guido 作客 Python Bytes 播客節(jié)目,談?wù)摽s進(jìn)話題:https://pythonbytes.fm/episodes/show/179/guido-van-rossum-drops-in-on-python-bytes

4、播客節(jié)目的視頻版:https://www.youtube.com/watch?v=PlvvVXeU0yw&feature=youtu.be

5、官方文檔對縮進(jìn)的解釋:https://docs.python.org/3/faq/design.html#why-does-python-use-indentation-for-grouping-of-statements

6、官方早期 wiki 的解釋:https://wiki.python.org/moin/Why%20separate%20sections%20by%20indentation%20instead%20of%20by%20brackets%20or%20%27end%27

7、池建強(qiáng)老師 MacTalk 文章:https://mp.weixin.qq.com/s?__biz=MjM5ODQ2MDIyMA==&mid=2650715803&idx=1&sn=94cd823de3689f40d4ed4c541a1ee791

首發(fā)地址:https://mp.weixin.qq.com/s/byhJnKoKSDnhUNUE9WWopw

視頻地址:

1、B站:https://www.bilibili.com/video/BV1UT4y137Yv/

2、知乎:https://www.zhihu.com/zvideo/1242823762849959936

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。