簡體   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