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