Python “输入”和“原始输入”之间的差异`

Python “输入”和“原始输入”之间的差异`,python,Python,在一篇教程中,我读到,input和raw\u input之间存在差异。我发现它们改变了Python 3.0中这些函数的行为。新的行为是什么 为什么在python控制台解释器中会出现这种情况 x = input() 发送一个错误,但如果我将其放入file.py并运行它,则不会发生错误?在python 2.x中,raw\u input()返回一个字符串,并input()在调用它的执行上下文中计算输入 >>> x = input() "hello" >>> y =

在一篇教程中,我读到,
input
raw\u input
之间存在差异。我发现它们改变了Python 3.0中这些函数的行为。新的行为是什么

为什么在python控制台解释器中会出现这种情况

x = input()

发送一个错误,但如果我将其放入file.py并运行它,则不会发生错误?

在python 2.x中,
raw\u input()
返回一个字符串,并
input()
在调用它的执行上下文中计算输入

>>> x = input()
"hello"
>>> y = input()
x + " world"
>>> y
'hello world'
在Python3.x中,
input
已经废弃,以前称为
raw\u input
的函数现在是
input
。因此,如果需要旧功能,您必须手动调用
compile
eval

python2.x                    python3.x

raw_input()   --------------> input()               
input()  -------------------> eval(input())     
在3.x中,上面的会话是这样的

>>> x = eval(input())
'hello'
>>> y = eval(input())
x + ' world'
>>> y
'hello world'
>>> 
因此,您可能在解释程序中遇到错误,因为您没有在输入周围加引号。这是必要的,因为它是经过评估的。从哪里得到名称错误?

input()与raw\u input()的比较

原始输入收集用户键入的字符,并将其显示为字符串。 input()不仅仅计算数字,而是将任何输入视为Python代码并尝试执行它。知识渊博但恶意的用户可以键入Python命令,甚至可以删除文件。坚持使用raw_input()并使用Python的内置转换函数将字符串转换为所需的数据类型

此外,input()对于用户错误也是不安全的!它需要一个有效的Python表达式作为输入;如果输入在语法上无效,则会引发语法错误。

很简单:

  • raw\u input()
    返回字符串值
  • input()
    返回整数值
  • 例如:

    一,

    输出:

    Enter some value = 123
    '123'
    
    Enter some value = 123
    123
    
    二,

    输出:

    Enter some value = 123
    '123'
    
    Enter some value = 123
    123
    
    因此,如果我们执行
    x+x=
    ,它将输出为123123


    当我们执行
    y+y=
    时,它将输出为246

    这里发生了什么,我在控制台(3.x)上尝试了你的代码,它解释了x=input()“hello”我收到的错误>>>x=input()回溯(最近一次调用):文件“”,在EOFError:EOF中读取line@Guillermo,我展示的翻译部分是2.x版的。我在3.x上搞砸了(我根本没怎么玩它),所以我删除了我答案的那一部分。嗯,也许我应该开始学习python 2.x,我只是想在以后的学习中掌握最新的。但我不想被困在这里,因为这太浪费时间了,我想我可以找到另一个教程。@Guillermo,这是我的最终答案。而且,在学习过程中没有什么是浪费时间的。事实证明,我对3.x的理解是正确的,我只是尝试在其中做一些不同的事情。为什么你认为你在浪费时间?也许是在Python2.x上,但不是在Python3.x上。python 3.x中的input()始终返回字符串。此外,原始输入()已从python 3中删除