在 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(...))
。
为什么现在与 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 thinkraw_input()
is worth discussing -- I wouldn't need it, but it's little more than a convenience function.
如果您确实需要旧的input
,请使用eval(input(...))
。