代码之家  ›  专栏  ›  技术社区  ›  Naetmul

为什么在python repl的if语句后面会出现无效语法错误?

  •  5
  • Naetmul  · 技术社区  · 6 年前

    我认为这是完全正确的。

    if False:
        print(1)
    print(2)
    

    但是,它在python repl中给了我一个无效的语法错误。

    为什么会这样?

    enter image description here

    在Python3.6.5(x64)上,Windows 10 RS4

    1 回复  |  直到 6 年前
        1
  •  2
  •   thefourtheye    6 年前

    引用 https://docs.python.org/3/tutorial/interpreter.html#interactive-mode ,

    输入多行构造时需要连续行。例如,查看以下if语句:

    >>>
    >>> the_world_is_flat = True
    >>> if the_world_is_flat:
    ...     print("Be careful not to fall off!")
    ...
    Be careful not to fall off!
    

    连续行决定块的开始和结束位置。所以如果有一条延长线,就意味着它是块的一部分。在你的情况下,你有一条线 print(2) ,在作为块的一部分处理的连续行中没有缩进。这就是它失败的原因 SyntaxError .


    正如用户2357112指出的,这种行为在 https://docs.python.org/3/tutorial/introduction.html#first-steps-towards-programming ,

    循环的主体是缩进的:缩进是python对语句进行分组的方式。在交互式提示下,必须为每一缩进行键入制表符或空格。实际上,您将使用文本编辑器为python准备更复杂的输入;所有优秀的文本编辑器都有自动缩进功能。 当以交互方式输入一个复合语句时,它后面必须跟一个空行以指示完成(因为解析器无法猜测您何时输入了最后一行)。注意,基本块中的每一行必须缩进相同的数量。