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中删除