【发布时间】:2011-10-10 05:57:31
【问题描述】:
我目前教一年级的大学生 Python,我惊讶地发现我的一些学生决定使用的看似无害的 input 函数(并且被奇怪的行为弄糊涂了)隐藏了一个调用到后面的eval。
所以我的问题是,为什么input 函数调用eval,这对使用raw_input 不会更安全有什么用处?我知道这在 Python 3 中已经改变,但首先这似乎是一个不寻常的设计决定。
【问题讨论】:
-
代码高尔夫很有用
-
回答“为什么”——Python 的第一个 REPL 可能是
while 1: print input()。我敢打赌,在那个古老的时代,支持良好的编程实践在 Python 的优先事项列表中并没有现在那么重要。 Python 3 的while True: print(eval(input()))可能看起来更令人困惑——所有这些嵌套的括号!
标签: python user-input python-2.x