Python中的块之前冒号的目的是什么?
Python中的块之前冒号的目的是什么?
例:
if n == 0: print "The end"
冒号在那里声明一个缩进块的开始。
从技术上讲,这是没有必要的。 块完成后,您可以缩进和取消缩进。 然而,基于Python的 “显式优于隐式”(EIBTI),我认为Guido故意使冒号成为强制性的,所以任何 应该由缩进代码跟随的语句都以冒号结尾。 (如果你继续冒号,它也允许单行,但是这种风格并没有被广泛使用。)
这也使语法意识的自动缩进编辑器的工作更容易,这也被计入决策。
这个问题原来是一个Python常见问题解答 ,我在这里find了Guido的一个答案:
为什么if / while / def / class语句需要冒号?
冒号主要是为了提高可读性(实验ABC语言的结果之一)。 考虑一下:
if a == b print a
与
if a == b: print a
注意第二个如何更容易阅读。 进一步注意一个冒号在这个常见问答答案中的例子。 这是英文的标准用法。
另一个小原因是冒号使得语法高亮的编辑更容易; 他们可以查找冒号来决定何时需要增加缩进,而不必对程序文本做更精细的parsing。
考虑从杂货店购买的东西,在Pewprikanese写的以下清单。
pewkah lalala chunkykachoo pewpewpew skunkybacon
当我读到时,我很困惑,chunkykachoo和pewpewpewpewlawlawlala? 或者,如果chunkykachoo和pewpewpew因为特殊项目而缩进呢?
现在看看当我的Pewprikanese朋友添加一个冒号来帮助我更好地parsing列表时会发生什么:(< – 像这样)
pewkah lalala: (<-- see this colon) chunkykachoo pewpewpew skunkybacon
现在很明显chunkykachoo和pewpewpew是一种lalala。
假设有一个人正在开始学习Python,这正好是她第一个学习的编程语言。 如果没有冒号,那么她很可能会不断思考“这条线是缩进的,因为这条线就像是特殊的东西”,可能需要一些时间才能认识到这不是考虑缩进的最好方法。
三个原因:
- 增加可读性。 冒号帮助代码stream入下面的缩进块。
- 为了帮助文本编辑器/ IDE,如果上一行以冒号结尾,他们可以自动缩进下一行。
- 为了使pythonparsing稍微容易一些。
据我所知,这是一个有意的devise,使其更加明显,读者应该期望在冒号之后有一个缩进。
它也使得这样的构造成为可能:
if expression: action() code_continues()
请注意(作为一个评论者),这不完全是良好的Python风格的shiny金标准。 有一个空白会好得多:
if expression: action() code_continues()
避免混淆。 我只是想用第一个例子来说明,可以像这样写,因为紧跟在冒号后面的if
代码可以让编译器明白下一行不应该缩进。