Python 中块前的冒号的用途是什么?

新手上路,请多包涵

Python 中块前的冒号的用途是什么?

例子:

 if n == 0:
    print "The end"

原文由 Joshua Swink 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 489
2 个回答

冒号用于声明缩进块的开始。

从技术上讲,这是没有必要的;当块完成时,您可以缩进和取消缩进。然而,基于 Python 公案“显式优于隐式”(EIBTI),我相信 Guido 故意将冒号设为强制性的,因此 任何 应该 跟在缩进代码后面的语句都以冒号结尾。 (如果你在冒号后继续,它也允许单行,但这种风格没有被广泛使用。)

它还使语法感知自动缩进编辑器的工作更容易,这也在决策中得到考虑。


这个问题原来是一个 Python FAQ ,我在 这里 找到了 Guido 的答案之一:

为什么 if/while/def/class 语句需要冒号?

需要冒号主要是为了增强可读性(实验性 ABC 语言的结果之一)。考虑一下:

 if a == b
    print a

相对

if a == b:
    print a

请注意第二个更容易阅读。进一步注意冒号如何引出此常见问题解答中的示例;这是英语的标准用法。

另一个次要原因是冒号使编辑器更容易进行语法高亮显示;他们可以寻找冒号来决定何时需要增加缩进,而不必对程序文本进行更精细的解析。

原文由 tzot 发布,翻译遵循 CC BY-SA 3.0 许可协议

考虑以下用 Pewprikanese 编写的从杂货店购买的物品清单。

 pewkah
lalala
    chunkykachoo
    pewpewpew
skunkybacon

当我读到它时,我很困惑,chunkykachoo 和 pewpewpew 是一种 lalala 吗?或者,如果 chunkykachoo 和 pewpewpew 只是因为它们是特殊项目而缩进怎么办?

现在看看当我的 Pewprikanese 朋友添加一个冒号以帮助我更好地解析列表时会发生什么:(<– 像这样)

 pewkah
lalala:   (<-- see this colon)
    chunkykachoo
    pewpewpew
skunkybacon

现在很明显,chunkykachoo 和 pewpewpew 是一种 lalala。

假设有一个人开始学习 Python,这恰好是她要学习的第一门编程语言。如果没有冒号,她很可能会继续思考“这些行是缩进的,因为这些行就像特殊的项目。”,并且可能需要一段时间才能意识到这不是考虑缩进的最佳方式。

原文由 Yoo 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题