`input`和`raw_input`之间的区别

在教程中,我读到了inputraw_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。

这很简单:

  1. raw_input()返回string值
  2. 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