Это означает, что вы пытаетесь манипулировать тем, что имеет ссылку, но еще не инициализировано. Первое, что нужно сделать, это проверить каждый созданный экземпляр. Используйте контрольные точки, часы, проверяйте свои значения varibale. Следить за трассировкой стека и искать точные строки и столбцы, которые создают проблему
С Python 3 функция print
- это функция, а не оператор, поэтому вам нужны скобки вокруг аргументов, как в print("continue")
, если вы использовали Python 3.
однако, указывает на более раннюю позицию, чем на Python 3, поэтому вместо этого вы должны использовать Python 2.x. В этом случае ошибка возникает из-за того, что вы вводите это в интерактивном интерпретаторе, и ему нужна небольшая «помощь», чтобы выяснить, что вы пытаетесь сказать. Введите пустую строку после предыдущего блока, чтобы он мог правильно расшифровать отступ, как в этом:
>>> try:
... fsock = open("/bla")
... except IOError:
... print "Caught"
...
(some output shows here)
>>> print "continue"
Попробуйте это в интерпретаторе:
try:
fsock = open("/bla")
except IOError:
print "Caught"
print "continue"
Важно, что это пустая строка после отступа. Я использую интерпретатор python 2.6, и он выдает ту же синтаксическую ошибку, что и вы.
Это потому, что интерпретатор ожидает, что отдельные блоки будут разделены пустыми строками. Кроме того, пустая строка (два новых строчных символа) указывает конец блока и что интерпретатор должен выполнить его.
Вам нужно оставить пустую строку, чтобы закрыть блок except
. ...
указывает, что он все еще пытается поместить код в этот блок, даже если вы его отделите. Это всего лишь причуда интерактивного интерпретатора.