2016-03-07 59 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