2016-03-07 62 views
0

我使用Python 2.7爲什麼在空函數中允許多行註釋,但不允許單註釋?

我的IDE會顯示indent expected,如果我寫這樣

def foo(): 
    # 

功能但如果我寫這

def foo(): 
    ''' 
    ''' 

是否有任何之所以出現這種情況?

+0

因爲(多與否)*串*實際上是代碼(作爲'在一個函數的開始__doc__'屬性),但*評論*不。 – jonrsharpe

+0

我很好奇 - 做了一些書,教授,網站或其他資源告訴你'''''引入了多行評論?如果是這樣,你能告訴我是誰/那是什麼嗎? –

+0

注意:它不是特定於多行字符串。在Python中,只有空字符串「'」的def纔是有效的。 – wim

回答

5

評論是編譯器忽略的內容。當你在該行上發表評論時,編譯器基本上假裝它不存在。但多線字符串是代碼的物理元素。 Python認識到它的存在並沒有抱怨。

如果要編寫一個不起任何作用的函數,至少現在使用pass

def Foo(): 
    #Comment goes here 
    pass 

pass是說,一個關鍵字「的東西應該在這裏,但是我故意不把這裏任何東西」。

3

'''實際上並不是一個評論。它像一個行爲,但實際上是一個字符串分隔符。

嘗試:

>>> s = ''' 
... ''' 
>>> print(s) 


>>> repr(s) 
"'\\n'" 
>>> s = # 
    File "<stdin>", line 1 
    s = # 
     ^
SyntaxError: invalid syntax 
>>> s = '''foo''' 
>>> print(s) 
foo