冒号在Python块前的作用是什么?
在Python中,冒号的作用是什么呢?
举个例子:
if n == 0:
print "The end"
5 个回答
17
三个原因:
- 提高可读性。冒号可以让代码更顺畅地进入下面的缩进块。
- 帮助文本编辑器或集成开发环境(IDE)。如果上一行以冒号结尾,它们可以自动缩进下一行。
- 让Python的解析过程稍微简单一些。
28
想象一下,下面是一份用Pewprikanese写的购物清单。
pewkah
lalala
chunkykachoo
pewpewpew
skunkybacon
当我看到这个清单时,我感到很困惑,chunkykachoo和pewpewpew是lalala的一种吗?还是说它们只是因为是特别的物品而缩进了呢?
现在看看我的Pewprikanese朋友加了一个冒号后,清单变得更清晰了:(<-- 就像这样)
pewkah
lalala: (<-- see this colon)
chunkykachoo
pewpewpew
skunkybacon
现在很明显,chunkykachoo和pewpewpew确实是lalala的一种。
假设有一个人正在学习Python,这是她学习的第一门编程语言。如果没有冒号,她很可能会一直认为“这些行是缩进的,因为它们像是特别的物品。”,而且可能需要一段时间才能意识到,这样理解缩进并不是最好的方式。
76
冒号的作用是标记一个缩进块的开始。
从技术上讲,冒号并不是必须的;你可以直接缩进,然后在块结束时取消缩进。不过,根据Python的原则“明确优于隐含”(EIBTI),我认为Guido故意让冒号成为必需,这样任何需要后面跟缩进代码的语句都必须以冒号结尾。(这也允许在冒号后继续写一行代码,但这种写法并不常见。)
此外,这样做也让一些能识别语法的自动缩进编辑器工作起来更简单,这也是做出这个决定时考虑的因素之一。
这个问题实际上是Python常见问题之一,我找到Guido对此的一个回答在这里:
为什么if/while/def/class语句需要冒号?
冒号主要是为了提高可读性(这是实验性ABC语言的一个结果)。想想看:
if a == b print a
和
if a == b: print a
注意第二个例子稍微容易读一些。再注意一下,冒号在这个常见问题的回答中起到了分隔的作用;这在英语中是标准用法。
另一个小原因是,冒号让带有语法高亮的编辑器更容易工作;它们可以通过查找冒号来判断何时需要增加缩进,而不必对程序文本进行更复杂的解析。