擅长:python、mysql、java
<p>我猜这是你问题的最低版本-</p>
<pre><code>>>> def blah():
... return 1
... blah()
File "<stdin>", line 3
blah()
^
SyntaxError: invalid syntax
>>> blah()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'blah' is not defined
</code></pre>
<p>在pythonshell/IDLE中,您需要在一个块结束后输入一个换行符(空行),这样python就可以解释这个块(这对任何块都有效,比如函数定义、循环、<code>with</code>块等)。你知道吗</p>
<p>在上面,当我复制和粘贴代码时-</p>
<pre><code>def blah():
return 1
blah()
</code></pre>
<p>如果没有空格,就会出现语法错误,因为函数定义后没有换行符。一种方法(正如您已经观察到的)是分别复制粘贴函数和函数调用(并确保通过按enter键/在末尾添加新行来定义函数)。(我不确定这是否是pythonshell中的某种bug,但python2.x和python3.x都是这样)。你知道吗</p>
<p>请注意,只有将代码复制粘贴到shell时,才需要这样做,而不是将脚本保存为.py文件并运行它时,如果将代码作为脚本运行时,则不需要换行符(不过最好将它们放在可读性方面)。你知道吗</p>