python3.x中raw_input()和input()有什么区别?
如何使输入python 2和python 3兼容的程序?
为此,您尝试将input设置为raw_input,忽略名称错误。
查找"six"库以了解python 2和3的兼容性。
区别在于Python3.x中不存在raw_input(),而input()存在。实际上,旧的raw_input()已经改名为input(),旧的input()已经不存在了,但可以很容易地用eval(input())来模拟。(记住以东十一〔六〕是恶的。尽可能使用更安全的方法分析输入。)
"raw_input之间有什么区别?"-"区别在于没有raw_input"…我想说,有很大的区别!
在python 2中,我猜他们假设程序员实际上想"执行"用户输入的命令,因为最初(我猜)向用户请求输入可能只是为了这个。但是当他们意识到程序员可能也想要"原始"输入时,他们设计了另一个称为"原始"输入的函数。在Python3中,他们注意到了这一点,并简单地删除了原始输入默认值的执行,只生成了一个简单的函数。
repl.it,运行py3.5.1将raw_input()作为关键字。
需要指出的是,一般应避免使用eval和exec,因为它们可能是一种安全风险。有关详细信息,请参阅这么老练的内德·巴切尔德的《Eval真的很危险》。当然,这个建议也适用于旧的python 2 input。
@pm2ring我在答案中添加了一个警告。当然,eval()和exec()都有有效的用例,但是在决定使用它之前,您首先需要了解为什么不应该使用eval()。
值得注意的是,这仍然在被调整,文档显示py34和py36在base int处理中看到了变化:[link]docs.python.org/3/library/functions.html input
在python 2中,raw_input()返回一个字符串,input()尝试将输入作为python表达式运行。
由于获得字符串几乎总是您想要的,所以Python3使用input()实现了这一点。正如斯文所说,如果你想要旧的行为,那么eval(input())是有效的。
您应该补充一下,python 3没有raw_input()。
将输入作为python表达式运行的用途是什么?
@可能是为了输入数字。但它是完全不安全的。
Python 2:
raw_input()精确地接受用户键入的内容,并将其作为字符串传递回来。
input()首先取raw_input(),然后对其执行eval()。
主要的区别在于,input()期望有一个语法正确的python语句,而raw_input()不期望。Python 3:
raw_input()被重命名为input(),所以现在input()返回准确的字符串。
旧的input()被移除。
如果要使用旧的input(),这意味着需要将用户输入评估为python语句,则必须使用eval(input())手动执行。
…在Python 2中。
不适用于python 3
在python 3中,不存在sven已经提到的raw_input()。
在python 2中,input()函数评估您的输入。
例子:
1
2
3
4
5
6
7
8name = input("what is your name ?")
what is your name ?harsha
Traceback (most recent call last):
File"", line 1, in
name = input("what is your name ?")
File"", line 1, in
NameError: name 'harsha' is not defined
在上面的示例中,python 2.x试图将harsha作为变量而不是字符串来计算。为了避免这种情况,我们可以在输入内容周围使用双引号,如"harsha":
1
2
3
4>>> name = input("what is your name?")
what is your name?"harsha"
>>> print(name)
harsha
RWYIN()
raw_input()`函数不进行计算,它只读取您输入的内容。
例子:
1
2
3
4name = raw_input("what is your name ?")
what is your name ?harsha
>>> name
'harsha'
例子:
1
2
3
4
5
6
7
8name = eval(raw_input("what is your name?"))
what is your name?harsha
Traceback (most recent call last):
File"", line 1, in
name = eval(raw_input("what is your name?"))
File"", line 1, in
NameError: name 'harsha' is not defined
在上面的示例中,我只是尝试使用eval函数评估用户输入。
我想在每个人为python 2用户提供的解释中增加一点细节。raw_input(),现在您已经知道,它评估用户以字符串形式输入的任何数据。这意味着python不会再尝试理解输入的数据。它只会考虑输入的数据是字符串,不管它是否是实际的字符串或int或任何东西。
另一方面,input()试图理解用户输入的数据。因此,像helloworld这样的输入甚至会将错误显示为'helloworld is undefined。
总之,对于python 2,也要输入一个字符串,需要像'helloworld',这是python中使用字符串的常见结构。
如果要确保代码与python2和python3一起运行,请在脚本中使用函数input(),并将其添加到脚本开头:
1
2
3
4
5
6
7
8
9
10from 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")
两者都是相同的,唯一的区别是在各自的Python版本中使用它们。
在Python 2:
raw_input():它精确地接受用户类型并将其作为字符串对象传递回来。
input():它精确地获取所使用的类型,然后转换输入对象的类型。例子。使用输入[10,20,30],然后它将作为列表对象类型返回。
在Python 3中:
input():与python2中的raw_input()完全相同。
eval(input()):与python2中的input()完全相同。
那么,这条线索中的每个答案都说了些什么呢??这个问题就像8岁一样。