在Python中执行块之前冒号的目的是什么?
例:
if n == 0:
print "The end"
在Python中执行块之前冒号的目的是什么?
例:
if n == 0:
print "The end"
Answers:
冒号在那里声明缩进块的开始。
从技术上讲,这是没有必要的;您可以在程序段完成后缩进和缩进。但是,基于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是拉拉拉的一种吗?或者,如果chunkykachoo和pewpewpew只是因为它们是特殊项而缩进了怎么办?
现在看看当我的Pewprikanese朋友添加冒号来帮助我更好地解析列表时会发生什么:(<-像这样)
pewkah
lalala: (<-- see this colon)
chunkykachoo
pewpewpew
skunkybacon
现在很明显,chunkykachoo和pewpewpew是一种拉拉舞。
假设有一个人开始学习Python,这恰好是她学习的第一门编程语言。没有冒号,她很有可能会继续思考“缩进这一行,因为这行就像是特殊项目。”,可能要花一些时间才能意识到这不是考虑缩进的最佳方法。
三个原因:
根据Python发明者Guido Van Rossum的说法,使用冒号使结构更明显的想法是受Python的前身ABC语言的早期实验启发的,该实验也针对初学者。显然,在早期测试中,初学者学习结肠时比没有结肠时进步更快。在Guido的python后历史博客中阅读整个故事。
http://python-history.blogspot.com/2009/02/early-language-design-and-development.html
是的,冒号在单线中很有用,并且比分号更令人讨厌。另外,长时间使用样式指南时,建议仅在以二进制运算符结尾时才在多行上断开
x = (23 +
24 +
33)
冒号的添加使复合语句看起来与提高样式统一性的方式相同。
CPython和无冒口方言都有一种称为Cobra的“无冒号”编码。那些没有接。