Python为什么忽略注释缩进?

问题描述 投票:0回答:1

显然,这:

def f():
    pass
# maybe the function is over
    pass  # oh wait, it's not

f()

是有效语法,但不是:

def f():
    pass
''' maybe the function is over '''
    pass  # oh wait, it's not

f()

这让我感到非常惊讶。所以我的问题是:

  • 为什么?为什么Python不会将第一个版本视为语法错误?
  • PEP8中是否有任何建议不要这样做?
python comments whitespace indentation
1个回答
2
投票

是第一个有效,因为它以在语言中定义为注释行的#开头,因此将其忽略,并且其缩进不会终止功能或开始新的功能。

后者是不同的,它是一个字符串,但是从未使用过它的值,您可以使用它来实现多行注释,但解释器仍会尝试将该字符串作为代码来评估,因此该字符串的缩进对于解释器很重要它可以终止作用域。

对于第二个类似的东西>

'''comment''''

给交涉者的代码就是这个

my_var = '''comment'''
© www.soinside.com 2019 - 2024. All rights reserved.