[英]Why am I getting: SyntaxError: invalid syntax (<string>, line 1) in python?
[英]Why am I getting a SyntaxError in the Python interpreter?
當我從 .py 文件中嘗試時,此代碼有效,但在命令行解釋器和空閑時失敗。
>>> try:
... fsock = open("/bla")
... except IOError:
... print "Caught"
... print "continue"
File "<stdin>", line 5
print "continue"
^
SyntaxError: invalid syntax
我正在使用 python 2.6
使用Python 3, print
是一個函數而不是語句,因此如果使用Python 3,則需要圍繞參數使用括號,如print("continue")
。
但是,插入符指向比Python 3更早的位置,所以你必須使用Python 2.x。 在這種情況下,錯誤是因為您在交互式解釋器中輸入此錯誤,並且需要一些“幫助”來弄清楚您要告訴它的內容。 在上一個塊之后輸入一個空行,以便它可以正確解密縮進,如下所示:
>>> try:
... fsock = open("/bla")
... except IOError:
... print "Caught"
...
(some output shows here)
>>> print "continue"
您需要留下一個空行來關閉except
塊。 ...
表示它仍在嘗試將代碼放入該塊中,即使您喜歡它。 這只是交互式解釋器的一個怪癖。
在解釋器中嘗試這個:
try:
fsock = open("/bla")
except IOError:
print "Caught"
print "continue"
這里重要的是縮進后的空行。 我正在使用python 2.6解釋器,它會拋出與您相同的語法錯誤。
這是因為解釋器需要用空行分隔的單個塊。 另外,空白行(兩個新行字符)表示塊的結束,並且解釋器應該執行它。
與 if/else 或 for 或 while 一樣,try/except 是復合語句。 在 Python shell 提示符中,控制關鍵字: ... 后面的語句需要縮進,因為語句或復合語句是一一執行的。 您的最后一個 print("continue") 與頂級 try: 對齊,並考慮了另一個語句因此語法錯誤。 如果您想以交互方式測試 try/except/else/finally,可以將它們包裝在 function 中:
>>> def t():
... try:
... print(x)
... except:
... print('exception')
... return
... finally:
... print('finally')
... print('continue')
... print('end function t()')
...
>>> t()
exception
finally
>>> x = 99
>>> t()
99
finally
continue
end function t()
>>>
這是通過 Windows python shell 完成的。 當我在 PyCharm IDE python 控制台上嘗試時,它允許在復合語句之后再執行一條語句。
>>> n = 0
>>> while n!= 5:
... n+=1
... print('n = {}'.format(n))
n = 5 # no syntax error
>>>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.