由于某种原因,无法定义这样的方法:
class X:def y():pass #Results in a SyntaxError
但是您可以在同一行中定义方法和内容:
def y():print("It works!")
为什么第二个示例有效,但第一个示例无效?
答案 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?')