python3.x中raw_input()和input()之间的区别是什么?

pku*_*mar 344 python python-3.x

是什么区别raw_input(),并input()在python3.x?

Sve*_*ach 402

不同之处在于raw_input()Python 3.x中不存在input().实际上,旧的raw_input()已经改名为input(),旧input()的已经消失,但可以通过使用轻松模拟eval(input()).(请记住,这eval()是邪恶的.尽可能使用更安全的方式解析您的输入.)

  • "`raw_input` ...之间有什么区别?" - "不同之处在于没有'raw_input`." ......差别很大,我会说! (84认同)
  • 在Python 2中,我猜他们假设程序员想要实际"执行"作为用户输入的命令,因为最初(我猜)请求来自用户的输入可能只是为了那个.但当他们意识到程序员可能也想要获得"原始"输入时,他们设计了另一个名为"raw_input"的函数.在Python 3中,他们注意到了什么是愚蠢的,只是删除了原始输入默认的执行,只产生了一个简单的函数. (9认同)
  • 需要说的是,通常应避免使用`eval`(和`exec`),因为它们可能存在安全风险.有关详细信息,请参阅SO退伍军人Ned Batchelder的[Eval真的很危险](http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html).当然,这个建议也适用于旧的Python 2`input`. (2认同)

Tho*_*s K 186

在Python 2中,raw_input()返回一个字符串,并input()尝试将输入作为Python表达式运行.

因为获取字符串几乎总是你想要的,所以Python 3就是这样做的input().正如斯文所说,如果你想要旧的行为,那就eval(input())有效.

  • 你应该补充一点,Python 3没有`raw_input()`. (7认同)

scr*_*low 109

Python 2:

  • raw_input() 获取用户输入的内容并将其作为字符串传回.

  • input()首先采取raw_input(),然后执行eval()它.

主要区别在于input()期望语法正确的python语句raw_input()不需要.

Python 3:

  • raw_input()被重命名为input()现在input()返回确切的字符串.
  • input()被删除了.

如果你想使用旧的input(),意味着你需要将用户输入作为python语句进行评估,你必须使用它来手动完成eval(input()).


Har*_*han 26

在Python 3 raw_input()中,Sven已经提到过不存在.

在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
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,Python 2.x试图将harsha评估为变量而不是字符串.为避免这种情况,我们可以在输入中使用双引号,例如"harsha":

>>> name = input("what is your name?")
what is your name?"harsha"
>>> print(name)
harsha
Run Code Online (Sandbox Code Playgroud)

的raw_input()

raw_input()`函数没有计算,它只会读取你输入的内容.

例:

name = raw_input("what is your name ?")
what is your name ?harsha
>>> name
'harsha'
Run Code Online (Sandbox Code Playgroud)

例:

 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
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我只是试图用该eval函数评估用户输入.


Rub*_*bal 7

我想为每个人为python 2用户提供的解释添加更多细节.raw_input(),到目前为止,您知道评估用户输入的数据字符串.这意味着python不会尝试再次理解输入的数据.所有它将考虑的是输入的数据将是字符串,无论它是否是实际的字符串或int或任何东西.

input()在另一方面试图理解用户输入的数据.因此输入helloworld就会将错误显示为' helloworld is undefined'.

总之,对于python 2,要输入一个字符串,你需要输入它,就像' helloworld'这是python中使用字符串的常用结构.


小智 5

如果您想确保您的代码使用 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")
Run Code Online (Sandbox Code Playgroud)