【发布时间】:2011-04-17 13:58:42
【问题描述】:
在教程中,我读到input 和raw_input 之间存在差异。我发现它们在 Python 3.0 中改变了这些函数的行为。新行为是什么?
以及为什么在 python 控制台解释器中
x = input()
发送错误,但如果我将其放入 file.py 并运行它,它不会?
【问题讨论】:
标签: python
在教程中,我读到input 和raw_input 之间存在差异。我发现它们在 Python 3.0 中改变了这些函数的行为。新行为是什么?
以及为什么在 python 控制台解释器中
x = input()
发送错误,但如果我将其放入 file.py 并运行它,它不会?
【问题讨论】:
标签: python
在 python 2.x 中,raw_input() 返回一个字符串,input() 在调用它的执行上下文中评估输入
>>> x = input()
"hello"
>>> y = input()
x + " world"
>>> y
'hello world'
在 python 3.x 中,input 已被废弃,以前称为 raw_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_input()
raw_input 收集用户输入的字符并将它们显示为字符串。 input() 不仅计算数字,而且将任何输入视为 Python 代码并尝试执行它。知识渊博但怀有恶意的用户可以输入 Python 命令,甚至可以删除文件。坚持 raw_input() 并使用 Python 的内置转换函数将字符串转换为您需要的数据类型。
还有 input(),不能避免用户错误!它需要一个有效的 Python 表达式作为输入;如果输入在语法上无效,则会引发 SyntaxError。
【讨论】:
很简单:
raw_input() 返回字符串值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
【讨论】: