当前位置:  开发笔记 > 编程语言 > 正文

在Python中的块之前冒号的目的是什么?

如何解决《在Python中的块之前冒号的目的是什么?》经验,为你挑选了4个好方法。

在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,这恰好是她学习的第一门编程语言.没有冒号,她很可能会继续思考"这条线是缩进的,因为这条线就像特殊物品一样.",并且可能需要一段时间才能意识到这不是考虑缩进的最佳方式.



1> tzot..:

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

从技术上讲,没有必要; 你可以在块完成时缩进和缩进.然而,基于Python koan "显性优于隐式"(EIBTI),我认为Guido故意使冒号成为强制性的,因此任何应该跟随缩进代码的语句以冒号结尾.(如果你在冒号之后继续,它也允许单行,但这种风格没有广泛使用.)

它还使语法感知自动缩进编辑器的工作更容易,这也决定了.


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

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

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

if a == b 
    print a

if a == b: 
    print a

注意第二个如何更容易阅读.请进一步注意冒号如何引用此FAQ答案中的示例; 这是英语的标准用法.

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


啊.显式优于隐式.你知道还有什么是明确的吗?阻止关闭分隔符.邪教编程.
上面的Python FAQ链接不再起作用.这个有用:http://docs.python.org/faq/design.html#why-are-colons-required-for-the-if​​-while-def-class-statements
@MarkGerolimatos块关闭分隔符是显式的,但是de-indentation也是如此.

2> Yoo..:

考虑从杂货店购买的以下列表,用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中需要缩进,所以这个例子并不适合我.如果冒号是必需的,那么缩进应该是可选的我说:-)为什么有两个相同的指示?是不是只有一个更复杂?
+ Sam Joseph:结肠标志着开始,而不是结束.所以你不能让缩进可选.只有冒号可以是可选的.

3> Ryan..:

三个原因:

    增加可读性.冒号帮助代码流入下面的缩进块.

    为了帮助文本编辑器/ IDE,如果前一行以冒号结束,它们可以自动缩进下一行.

    使python解析稍微容易一些.


我相信只有那些有条件期待它的人才能阅读它.对于那些刚接触Python的人,这很奇怪,因为它只使用空格,突然使用冒号而不仅仅是间距不会使它更具可读性,只会导致错误.唯一真正的原因是改变它为时已晚.语法解析器可以很容易地在没有冒号的情况下工作,来吧人们:IDE可能对我喜欢称之为"回车"的小东西很敏感.

4> unwind..:

据我所知,这是一个有意的设计,使其更加明显,读者应该期待结肠后的缩进.

它还使这样的结构成为可能:

if expression: action()
code_continues()

请注意(作为评论者所做的),这并不是优秀Python风格的闪亮金标准.有空白会好得多:

if expression: action()

code_continues()

避免混淆.我只是想说清楚,在第一个例子中,可以这样编写,因为使用if冒号后面的代码使得编译器可以理解下一行应该缩进.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有