在 python 3.x 中删除 raw_input() 的原因是什么?

What was the reason for removing raw_input() in python 3.x?

为什么现在与 input() 合并,最初使用它的优势是什么?

您几乎永远不需要 python2 input 提供的功能,但初学者经常使用它,在他们的应用程序中创建错误消息或隐藏的错误。

PEP 3111

旧的 raw_input 现在称为 input。它仍然是读取用户输入的默认方式。

另一方面,旧的 input 习惯于 eval 用户输入的任何内容。然而,eval 是危险的(如果我输入 import os; os.system("something evil") 会发生什么?)所以这个选项被删除了。

最初,正如我们从 PEP 3111 中看到的那样,它打算将两者都删除,但他们选择保留 raw_input 的功能,因为它真的很方便。

在讨论更改时,mailing lists 上也指出了旧 input 有害的想法:

Personally, I think input() should never have existed and must go no matter what. I think raw_input() is worth discussing -- I wouldn't need it, but it's little more than a convenience function.

如果您确实需要旧的input,请使用eval(input(...))