SyntaxError: invalid syntax в Python — как понять, где ошибка?
Запускаю программу, а получаю SyntaxError: invalid syntax и стрелочку ^ под какой-то строкой. Но строка вроде нормальная! Что значит invalid syntax и куда смотреть, чтобы найти настоящую ошибку?
2 ответа
SyntaxError: invalid syntax — это «я не понимаю эту конструкцию». Python показывает место, где он споткнулся, но реальная ошибка часто на строку выше.
Самые частые причины у новичков:
- Забыли двоеточие после
if/for/while/def:
if x > 0 # нет ':'
print(x)
станет
if x > 0:
print(x)
- Незакрытая скобка — тогда стрелка укажет на следующую строку:
print("hello" # забыли )
x = 1 # ^ ошибка покажется здесь
-
Знак
=вместо==в условии, или лишний/недостающий аргумент. -
Использование зарезервированного слова как имени:
class = 5.
Алгоритм поиска: посмотрите на стрелку, затем проверьте конец предыдущей строки — нет ли там пропущенного двоеточия или незакрытой скобки/кавычки. В 80% случаев дело именно в этом.
Добавлю частый кейс: смешали кавычки. Если строка начинается с ", а закрывается ' (или внутри текста есть такая же кавычка без экранирования) — будет invalid syntax. Решение: используйте разные виды кавычек или экранируйте: "Он сказал \"привет\"".