<h2>TL;博士</h2>
<p>在python2.x中使用<code>raw_input()</code>而不是<code>input()</code>,因为<code>input()</code>是<code>eval(raw_input))</code>的“速记”。你知道吗</p>
<hr/>
<p>在python2.7中,需要使用<code>raw_input()</code>而不是<code>input()</code>。<code>raw_input()</code>允许您以字符串的形式读入用户输入,而<code>input()</code>是<code>eval(raw_input())</code>的“速记”,它试图以文本Python代码的形式评估用户输入</p>
<p>Python2.x文档中对此进行了说明:</p>
<blockquote>
<p>[<code>input()</code> is] Equivalent to <code>eval(raw_input(prompt))</code>.</p>
<p>This function does not catch user errors. If the input is not syntactically valid, a <code>SyntaxError</code> will be raised. Other exceptions may be raised if there is an error during evaluation.</p>
<p>If the readline module was loaded, then input() will use it to provide elaborate line editing and history features.</p>
<p>Consider using the <code>raw_input()</code> function for general input from users.</p>
</blockquote>
<p>但是,这一点后来在python3.x中发生了更改。在python3.x中,<code>raw_input()</code>变成了<code>input()</code>,旧的输入(<code>eval(raw_input())</code>)被删除。这在<a href="https://docs.python.org/3/whatsnew/3.0.html" rel="nofollow noreferrer">What's new in Python 3</a>中有记载:</p>
<blockquote>
<p>PEP 3111: <code>raw_input()</code> <strong>was renamed to</strong> <code>input()</code>. That is, the new <code>input()</code> function reads a line from <code>sys.stdin</code> and returns it with the trailing newline stripped. It raises <code>EOFError</code> if the input is terminated prematurely. To get the old behavior of <code>input()</code>, use <code>eval(input())</code>.</p>
</blockquote>
<p>(我的重点)</sub></p>
<hr/>
<p>所以在python2.x中使用<code>raw_input()</code>而不是<code>input()</code>,因为<code>input()</code>是<code>eval(raw_input))</code>的“速记”。例如,改变:</p>
<p><code>name = input ("Can you tell me your name!")</code></p>
<p>至</p>
<p><code>name = raw_input ("Can you tell me your name!")</code></p>