`input`和`raw_input`之间的区别
在教程中,我读到了input
和raw_input
之间的区别。 我发现他们改变了Python 3.0中这些函数的行为。 什么是新的行为?
为什么在python控制台解释这个
x = input()
发送一个错误,但如果我把它放在一个file.py并运行它,它不?
在python 2.x中, raw_input()
返回一个string, input()
在它被调用的执行上下文中计算input
>>> x = input() "hello" >>> y = input() x + " world" >>> y 'hello world'
在python 3.x中, input
已经被废弃,并且之前被称为raw_input
的函数现在被input
。 所以如果你想要旧的function,你必须手动调用compile
和than 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中加上引号。 这是必要的,因为它被评估。 哪里出现名称错误?
input()vs raw_input()
raw_input收集用户键入的字符并将它们呈现为string。 input()不只是计算数字,而是将任何input视为Python代码并尝试执行它。 知识渊博,但恶意用户可以input一个甚至可以删除文件的Python命令。 坚持raw_input(),并使用Python内置的转换函数将string转换为您需要的数据types。
还input(),不安全的用户错误! 它期望一个有效的Pythonexpression式作为input; 如果input不是语法有效的,则会引发SyntaxError。
这很简单:
-
raw_input()
返回string值 - 而
input()
返回整数值
例如:
1。
x = raw_input("Enter some value = ") print x
输出:
Enter some value = 123 '123'
2。
y = input("Enter some value = ") print y
输出:
Enter some value = 123 123
因此,如果我们执行x + x =
它将以123123输出
而如果我们执行y + y =
它将输出为246