python编程:在else语句之前有多行注释

Python Programming: Multiline Comments before an Else statement

当语法错误产生以下代码时,我正在用Python中的简单if-else语句。

1
2
3
4
5
6
7
8
9
10
11
"""
A multi-line comment in Python
"""

if a==b:
    print"Hello World!"

"""
Another multi-line comment in Python
"""

else:
    print"Good Morning!"

此代码在"else"关键字处给出语法错误。

但是,以下代码没有:

1
2
3
4
5
6
7
8
9
10
"""
A multi-line comment in Python
"""

if a==b:
    print"Hello World!"

#One single line comment
#Another single line comment
else:
    print"Good Morning!"

有人能告诉我为什么会这样吗?为什么python解释器不允许if else语句之间有多行注释?


您的代码中使用了多行字符串。所以你基本上是在写作

1
2
3
4
5
6
if a==b:
    print"Hello World!"

"A string"
else:
    print"Good Morning!"

尽管guido van rossum(python的创建者)建议使用多行字符串作为注释,但是pep8建议使用多行注释作为块。

参见:http://legacy.python.org/dev/peps/pep-0008/block comments


对于它的价值,您可以通过使用缩进来解决这个问题:

1
2
3
4
5
6
7
8
9
10
11
12
a=2
for b in range(2, 4):
   """
    multi-line comment in Python
   """

    if a==b:
        print"Hello World!"
       """
        Another multi-line comment in Python
       """

    else:
        print"Good Morning!"

…但在我看来,它并不特别漂亮。

正如上面建议的那样,正如python将三重引号视为字符串一样,错误的缩进基本上缩短了循环并中断了程序的流,从而在定义不正确的else语句上引发了错误。

因此,我同意先前的Q.S和评论的观点,即多个单行报价是有利的。