Python:raw_input函数中的这个是什么意思?

Python: What does this mean in raw_input function?

所以,我最近开始学习python,我在raw_input()部分。

所以当我尝试不同的东西时,我犯了一个错误(至少我现在是这么想的)。有人可以解释一下这两种说法有什么区别吗?

  1. var1 = int(raw_input())

  2. var1 = int((raw_input())

我知道第一个等待用户输入并将其分配给变量 var1 但是,在第二种情况下,这是我得到的输出。

>>> x = int((raw_input()) 按下回车键后,它只显示省略号并等待用户输入。

... 12 我输入了 12,然后出现以下错误。

File "<stdin>", line 2 12 ^ SyntaxError: invalid syntax

我知道它清楚地表明这是一个语法错误,但它甚至不应该接受该声明吗?为什么要等待输入?

谢谢。

Python 版本: 2.7 OS: Windows

var1 = int((raw_input()) 有三个左括号和两个右括号。直到你用另一个右括号完成表达式,Python 认为你还没有写完表达式。这就是它显示省略号的原因。

当您键入“12”时,完整的表达式变为 var1 = int((raw_input())12,这是无效的语法,因为您不能在右括号后立即输入数字。

扩展凯文的回答,这里是为什么你会希望Python表现得像这样。在这种情况下,它为您提供了一个相当令人困惑的错误,但如果您做了类似

>>> x = int((raw_input())
... + "123")

那么可以解析为

>>> x = int((raw_input()) + "123")

>>> x = int(raw_input() + "123")

这将是一个有效的表达式。当你想写一个一行都放不下的很长的表达式时,这会很有用。任何时候你有一个额外的左括号,你都可以在新行上继续表达式。您可能想要这样做的一种情况是:

if (check_a_condition(a) and check_a_condition(b) or
    check_a_condition(c) and check_a_condition(d)):
    pass