来自Python2to3 doc http://docs.python.org/library/2to3:
input
:
转换input(prompt)
to eval(input(prompt))
在使用 Python 2 几年后,我目前正在尝试学习 Python 3。任何人都可以解释一下为什么该工具插入eval
在致电之前input
,以及我是否应该在所有 Python 3 代码中这样做?
python 2 的旧输入行为已被删除,python 3 的当前输入是以前名为 raw_input 的内容。 raw_input 和 python 3 输入总是返回一个字符串,这与尝试将输入计算为表达式的 input 不同。
2to3 工具插入了一个 eval,因为它无法判断您是否依赖旧输入自动评估其输入。旧的输入行为被认为是一个错误,因为你可以计算几乎任何有效的 python 表达式,因此任何使用 input() 的 python 程序都有一个明显的安全漏洞。转换后,您应该评估 eval 的每次使用,并确定该部分代码是否将接收任何不受信任的用户输入。
您永远不应该使用 eval(input()),除非在一次性脚本中。没有办法保证 eval 的安全。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)