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

11 浏览
0 Comments

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

这个问题在这里已经有答案了

Python 3 的 `input()` 和 `raw_input()` 有什么区别?[重复]

在一个教程中,我读到了 inputraw_input 之间存在不同。我发现在 Python 3.0 中,它们的行为发生了变化。新的行为是什么?

而且为什么在 Python 控制台解释器中,这个

x = input()

会发送一个错误,但如果我把它放在一个 file.py 文件中运行,却不会出错呢?

admin 更改状态以发布 2023年5月21日
0
0 Comments

input()与raw_input()的区别

raw_input收集用户输入的字符并将其作为字符串呈现。input()不仅仅评估数字,而是将任何输入作为Python代码处理并尝试执行。有知识但恶意的用户可能会输入一个Python命令,甚至可以删除文件。使用raw_input()并使用Python的内置转换函数将字符串转换为所需的数据类型。

此外,input()也无法避免用户的错误!它期望输入的是一个有效的Python表达式。如果输入不在语法上有效,则会引发SyntaxError错误。

0
0 Comments

在Python 2.x中,raw_input()返回一个字符串,而input()在执行上下文中评估输入

>>> x = input()
"hello"
>>> y = input()
x + " world"
>>> y
'hello world'

\n在Python 3.x中,input已被取消,以前称为raw_input的函数现在是input。因此,如果您需要旧功能,则必须手动调用compile,然后调用eval

python2.x                    python3.x
raw_input()   --------------> input()               
input()  -------------------> eval(input())     

\n在3.x中,上面的会话如下所示

>>> x = eval(input())
'hello'
>>> y = eval(input())
x + ' world'
>>> y
'hello world'
>>> 

\n因此,您可能在解释器中得到错误,因为您没有在输入周围添加引号。这是必要的,因为它会被评估。您是否遇到名称错误?

0