擅长:python、mysql、java
<p>对于Python 2,您需要的是<code>raw_input</code>,而不是<code>input</code>。前者会读一行。后者将读取一行并尝试执行它,如果您不希望代码被输入数据的人损坏,则不建议这样做。</p>
<p>例如,它们可以执行类似于调用任意函数的操作,如下例所示:</p>
<pre><code>def sety99():
global y
y = 99
y = 0
input ("Enter something: ")
print y
</code></pre>
<p>如果在Python 2下运行该代码并输入<code>sety99()</code>,则输出将<code>99</code>,尽管您的代码(在其正常执行流中)在任何时候都不会有意将<code>y</code>设置为除零以外的任何值(它在函数中执行,但您的代码从未显式调用该函数)。原因是<code>input(prompt)</code>调用等同于<code>eval(raw_input(prompt))</code>。</p>
<p>血淋淋的细节见<a href="http://docs.python.org/library/functions.html#input" rel="noreferrer">here</a>。</p>
<p>请记住,Python 3解决了这个问题。<a href="http://docs.python.org/py3k/library/functions.html#input" rel="noreferrer">input function there</a>的行为与您预期的一样。</p>