0

パイソン 2.7.3

コンソールから:

>>> try:
...     fsock = open("something_that_does_not_exist")
... except IOError:
...     print "The file does not exist"
... print "Let's keep going"
Traceback (  File "<interactive input>", line 5
    print "Let's keep going"
        ^
SyntaxError: invalid syntax

同じコードをスクリプトに保存すると:

ex.py

def try1():
    try:
        fsock = open("something_that_does_not_exist")
    except IOError:
        print "The file does not exist"
    print "Let's keep going"

そしてそれを実行します:

>>> import ex
>>> ex.try1()
The file does not exist
Let's keep going
>>> 

コンソール、IDLE、および PythonWin でこれを試しました。同じ結果です。

違いは何ですか?

編集:

私は、他のソースの中でも、「Dive into Python」( http://www.diveintopython.net/ ) で Python を学んでいます。例 6.1 では、この例がコマンド ラインから実行されていることが示されてい ます。

だからこそ、これはうまくいくはずだと思いました。

4

1 に答える 1

2

try exceptブロックを終了する必要があります。間に別の行を追加すると、インタープリターは混乱しません。その理由は、print ステートメントが try の一部であると考えているためですが、そうではありません。したがって、except ステートメントを終了し、その部分を実行してから、次の print ステートメントを貼り付けると、機能します。

>>> try:
...     fsock = open("something_that_does_not_exist")
... except IOError:
...     print "The file does not exist"
...
<output is here>

次に、このステートメントを次の場所に追加します。

>>> print "Let's keep going"

Python インタープリターへの貼り付けは、これと同様の理由で常に機能するとは限りません。インタープリターは、コードのランダムなスニペットをテストするためのものであり、巨大な関数を貼り付けたときに常に機能するとは期待できません。

ご覧のとおり、これは同じことです。

>>> try:
...     print 'hi'
... except:
...     print 'yo'
... print 'hi'
  File "<stdin>", line 5
    print 'hi'
        ^
SyntaxError: invalid syntax
>>> 
于 2013-02-03T04:16:11.390 に答える