在Python中的块之前冒号的目的是什么?
例:
if n == 0: print "The end"
tzot.. 73
冒号用于声明缩进块的开始.
从技术上讲,没有必要; 你可以在块完成时缩进和缩进.然而,基于Python koan "显性优于隐式"(EIBTI),我认为Guido故意使冒号成为强制性的,因此任何应该跟随缩进代码的语句都以冒号结尾.(如果你在冒号之后继续,它也允许单行,但这种风格没有广泛使用.)
它还使语法感知自动缩进编辑器的工作更容易,这也决定了.
这个问题原来是一个Python FAQ,我在这里找到了Guido的一个答案:
为什么if/while/def/class语句需要冒号?
结肠需要主要是为了增强可读性(实验性ABC语言的结果之一).考虑一下:
if a == b print a与
if a == b: print a注意第二个如何更容易阅读.请进一步注意冒号如何引用此FAQ答案中的示例; 这是英语的标准用法.
另一个小原因是冒号使编辑器更容易使用语法高亮显示; 他们可以寻找冒号来决定何时需要增加缩进,而不必对程序文本进行更详细的解析.
啊.显式优于隐式.你知道还有什么是明确的吗?阻止关闭分隔符.邪教编程. (9认同)
上面的Python FAQ链接不再起作用.这个有用:http://docs.python.org/faq/design.html#why-are-colons-required-for-the-if-while-def-class-statements (5认同)
@MarkGerolimatos块关闭分隔符是显式的,但是de-indentation也是如此. (2认同)
Yoo.. 24
考虑从杂货店购买的以下列表,用Pewprikanese书写.
pewkah lalala chunkykachoo pewpewpew skunkybacon
当我读到它时,我很困惑,chunkykachoo和pewpewpew是一种lalala?或者如果chunkykachoo和pewpewpew因为它们是特殊物品而缩进呢?
现在看看当我的Pewprikanese朋友添加冒号以帮助我更好地解析列表时会发生什么:(< - 像这样)
pewkah lalala: (<-- see this colon) chunkykachoo pewpewpew skunkybacon
现在很明显chunkykachoo和pewpewpew是一种lalala.
假设有一个人开始学习Python,这恰好是她学习的第一门编程语言.没有冒号,她很可能会继续思考"这条线是缩进的,因为这条线就像特殊物品一样.",并且可能需要一段时间才能意识到这不是考虑缩进的最佳方式.
冒号用于声明缩进块的开始.
从技术上讲,没有必要; 你可以在块完成时缩进和缩进.然而,基于Python koan "显性优于隐式"(EIBTI),我认为Guido故意使冒号成为强制性的,因此任何应该跟随缩进代码的语句都以冒号结尾.(如果你在冒号之后继续,它也允许单行,但这种风格没有广泛使用.)
它还使语法感知自动缩进编辑器的工作更容易,这也决定了.
这个问题原来是一个Python FAQ,我在这里找到了Guido的一个答案:
为什么if/while/def/class语句需要冒号?
结肠需要主要是为了增强可读性(实验性ABC语言的结果之一).考虑一下:
if a == b print a与
if a == b: print a注意第二个如何更容易阅读.请进一步注意冒号如何引用此FAQ答案中的示例; 这是英语的标准用法.
另一个小原因是冒号使编辑器更容易使用语法高亮显示; 他们可以寻找冒号来决定何时需要增加缩进,而不必对程序文本进行更详细的解析.
考虑从杂货店购买的以下列表,用Pewprikanese书写.
pewkah lalala chunkykachoo pewpewpew skunkybacon
当我读到它时,我很困惑,chunkykachoo和pewpewpew是一种lalala?或者如果chunkykachoo和pewpewpew因为它们是特殊物品而缩进呢?
现在看看当我的Pewprikanese朋友添加冒号以帮助我更好地解析列表时会发生什么:(< - 像这样)
pewkah lalala: (<-- see this colon) chunkykachoo pewpewpew skunkybacon
现在很明显chunkykachoo和pewpewpew是一种lalala.
假设有一个人开始学习Python,这恰好是她学习的第一门编程语言.没有冒号,她很可能会继续思考"这条线是缩进的,因为这条线就像特殊物品一样.",并且可能需要一段时间才能意识到这不是考虑缩进的最佳方式.
三个原因:
增加可读性.冒号帮助代码流入下面的缩进块.
为了帮助文本编辑器/ IDE,如果前一行以冒号结束,它们可以自动缩进下一行.
使python解析稍微容易一些.
据我所知,这是一个有意的设计,使其更加明显,读者应该期待结肠后的缩进.
它还使这样的结构成为可能:
if expression: action() code_continues()
请注意(作为评论者所做的),这并不是优秀Python风格的闪亮金标准.有空白会好得多:
if expression: action() code_continues()
避免混淆.我只是想说清楚,在第一个例子中,可以这样编写,因为使用if
冒号后面的代码使得编译器可以理解下一行不应该缩进.