为什么 Python 忽略评论缩进?

Why does Python ignore comment indentation?

显然,这:

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()

这对我来说是一个巨大的惊喜。所以我的问题是:

是的,第一个是有效的,因为它以 # 开头,它在语言中定义为注释行,因此它被忽略并且它的缩进不会结束函数或开始新的函数。

后者不同,它是一个评估过的字符串,但它的值从未被使用过,你可以用它来实现多行注释,但解释器仍然会尝试将该字符串评估为代码,所以这个字符串的缩进很重要给解释器,它可能会结束作用域。

第二个写类似

'''comment''''

解释器的代码与此

一样多
my_var = '''comment'''

但是这个

# comment

被忽略并且不是解释器的代码。