大家好绍弟,這是“Python為什么”系列節(jié)目的文字稿(文末有觀看地址)。
本期話題:Python 為什么使用縮進(jìn)來(lái)劃分代碼塊著洼,而不像其它語(yǔ)言使用花括號(hào) {} 或者 “end” 之類的語(yǔ)法樟遣?
Python 的縮進(jìn)是一個(gè)老生常談的話題,經(jīng)常有人會(huì)提及它身笤,比如 Python 之父在上個(gè)月就恰好轉(zhuǎn)發(fā)過(guò)一篇文章:
因?yàn)檫@篇文章豹悬,Guido 還受邀在 Python Bytes 播客上錄制了一期節(jié)目:
那么,Python 為什么要用縮進(jìn)來(lái)劃分代碼塊呢液荸?
我收集梳理了幾份材料瞻佛,接下來(lái)將帶大家一起揭曉 Python 這么做的設(shè)計(jì)原因:
- 縮進(jìn)語(yǔ)法,更加優(yōu)雅
- 縮進(jìn)語(yǔ)法娇钱,更加清晰
- 使用縮進(jìn)伤柄,保持一致性,避免造成誤讀
- 使用縮進(jìn)文搂,代碼更緊湊适刀,便于瀏覽,沒(méi)有累贅
- 使用縮進(jìn)煤蹭,已足夠令解釋器執(zhí)行笔喉,沒(méi)必要使用多余的符號(hào)
- 強(qiáng)制縮進(jìn),源自古老的 ABC 語(yǔ)言疯兼,Guido 是這門語(yǔ)言的設(shè)計(jì)者之一
- 其思想可能出自 Don Knuth(高德納然遏,著名計(jì)算機(jī)科學(xué)家,經(jīng)典巨著《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》的作者)吧彪,他在 1974 年提出待侵,在當(dāng)時(shí)是很時(shí)髦和前衛(wèi)的思想
- 使用縮進(jìn),可以終結(jié)大括號(hào)放在函數(shù)名后面還是再換一行的終極爭(zhēng)論(據(jù)說(shuō)此話題能令不同派系的程序員大打出手R搪恪)
以上羅列的原因主要來(lái)源于 Python 官方文檔秧倾、官方 wiki 以及 Python 之父的早期訪談。
總而言之傀缩,Python 使用縮進(jìn)語(yǔ)法那先,體現(xiàn)了它非常優(yōu)雅、清晰的設(shè)計(jì)美學(xué)赡艰,對(duì)開(kāi)發(fā)者售淡、讀者以及解釋器,都極為友好。
實(shí)話說(shuō)揖闸,我本人非常贊許 Python 的縮進(jìn)揍堕,因此才第一眼就迷上了它,如果是使用了花括號(hào)之類的語(yǔ)法汤纸,那 Python 就頓時(shí)黯淡衩茸,也就食之無(wú)味了!
大家如何看待 Python 的縮進(jìn)語(yǔ)法呢贮泞?請(qǐng)?jiān)谠u(píng)論區(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慎颗、官方文檔對(duì)縮進(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