提问人:pkumar 提问时间:2/7/2011 最后编辑:Georgypkumar 更新时间:3/30/2022 访问量:358851
Python 3 中的“raw_input()”和“input()”有什么区别?[复制]
What's the difference between `raw_input()` and `input()` in Python 3? [duplicate]
问:
Python 3 和 中有什么区别?raw_input()
input()
答:
区别在于 Python 3.x 中不存在,而存在。实际上,旧的已经重命名为 ,旧的已经消失了,但可以很容易地通过使用 来模拟。(记住那是邪恶的。如果可能,请尝试使用更安全的方法来解析输入。raw_input()
input()
raw_input()
input()
input()
eval(input())
eval()
评论
raw_input
raw_input
eval
exec
input
eval()
exec()
eval()
在 Python 2 中,返回一个字符串,并尝试将输入作为 Python 表达式运行。raw_input()
input()
由于获取字符串几乎总是您想要的,因此 Python 3 使用 .正如 Sven 所说,如果你想要旧的行为,那就行得通了。input()
eval(input())
评论
raw_input()
Python 2 中:
raw_input()
完全采用用户键入的内容,并将其作为字符串传回。input()
首先接受,然后对它执行 。raw_input()
eval()
主要区别在于,期望语法正确的 python 语句,而不需要。input()
raw_input()
Python 3:
raw_input()
已重命名为 所以现在返回确切的字符串。input()
input()
- 旧的被删除了。
input()
如果要使用旧的 ,这意味着您需要将用户输入评估为 python 语句,则必须使用 .input()
eval(input())
我想在大家为 python 2 用户提供的解释中添加更多细节。,到目前为止,您已经知道它评估用户以字符串形式输入的任何数据。这意味着 python 甚至不会再次尝试理解输入的数据。它所考虑的只是输入的数据将是字符串,无论它是实际的字符串还是 int 或其他任何东西。raw_input()
另一方面,试图理解用户输入的数据。因此,输入 like 甚至会将错误显示为“”。input()
helloworld
helloworld is undefined
总之,对于 python 2,要输入字符串,您也需要像 '' 一样输入它,这是 python 中使用字符串的常用结构。helloworld
在 Python 3 中,不存在 Sven 已经提到的。raw_input()
在 Python 2 中,该函数会评估您的输入。input()
例:
name = input("what is your name ?")
what is your name ?harsha
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
name = input("what is your name ?")
File "<string>", line 1, in <module>
NameError: name 'harsha' is not defined
在上面的示例中,Python 2.x 试图将 harsha 评估为变量而不是字符串。为了避免这种情况,我们可以在输入周围使用双引号,例如“harsha”:
>>> name = input("what is your name?")
what is your name?"harsha"
>>> print(name)
harsha
raw_input()
raw_input()' 函数不计算,它只会读取您输入的任何内容。
例:
name = raw_input("what is your name ?")
what is your name ?harsha
>>> name
'harsha'
例:
name = eval(raw_input("what is your name?"))
what is your name?harsha
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
name = eval(raw_input("what is your name?"))
File "<string>", line 1, in <module>
NameError: name 'harsha' is not defined
在上面的示例中,我只是尝试使用函数评估用户输入。eval
如果要确保代码与 python2 和 python3 一起运行,请在脚本开头添加函数:input()
from sys import version_info
if version_info.major == 3:
pass
elif version_info.major == 2:
try:
input = raw_input
except NameError:
pass
else:
print ("Unknown python version - input function not safe")
评论
input
raw_input