为什么不能在同一行上定义类和函数?

时间:2019-01-14 23:00:13

标签: python indentation

由于某种原因,无法定义这样的方法:

class X:def y():pass #Results in a SyntaxError

但是您可以在同一行中定义方法和内容:

def y():print("It works!")

为什么第二个示例有效,但第一个示例无效?

1 个答案:

答案 0 :(得分:6)

对于单行复合语句,正文必须为a simple statement, or a semicolon-separated list of simple statements

suite         ::=  stmt_list NEWLINE | NEWLINE INDENT statement+ DEDENT
statement     ::=  stmt_list NEWLINE | compound_stmt
stmt_list     ::=  simple_stmt (";" simple_stmt)* [";"]

它不能是复合语句。这将打开太多令人困惑和模棱两可的语法的大门。例如,

if True: if False: pass
else: print('Which "if" does this "else" go with?')