繁体   English   中英

为什么 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()

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

  • 为什么? 为什么 Python 不认为第一个版本是语法错误?
  • PEP8 中是否有任何建议不要这样做?

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

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

对于第二个写类似的东西

'''comment''''

对解释器来说是一样多的代码

my_var = '''comment'''

但是这个

# comment

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM