← Все вопросы

SyntaxError: invalid syntax в Python — как понять, где ошибка?

Задан 26 месяцев назад263 просмотров2 ответа
10

Запускаю программу, а получаю SyntaxError: invalid syntax и стрелочку ^ под какой-то строкой. Но строка вроде нормальная! Что значит invalid syntax и куда смотреть, чтобы найти настоящую ошибку?

2 ответа

13
✓ Принятый ответ — помог автору

SyntaxError: invalid syntax — это «я не понимаю эту конструкцию». Python показывает место, где он споткнулся, но реальная ошибка часто на строку выше.

Самые частые причины у новичков:

  1. Забыли двоеточие после if/for/while/def:
if x > 0    # нет ':'
    print(x)

станет

if x > 0:
    print(x)
  1. Незакрытая скобка — тогда стрелка укажет на следующую строку:
print("hello"     # забыли )
x = 1             # ^ ошибка покажется здесь
  1. Знак = вместо == в условии, или лишний/недостающий аргумент.

  2. Использование зарезервированного слова как имени: class = 5.

Алгоритм поиска: посмотрите на стрелку, затем проверьте конец предыдущей строки — нет ли там пропущенного двоеточия или незакрытой скобки/кавычки. В 80% случаев дело именно в этом.

4

Добавлю частый кейс: смешали кавычки. Если строка начинается с ", а закрывается ' (или внутри текста есть такая же кавычка без экранирования) — будет invalid syntax. Решение: используйте разные виды кавычек или экранируйте: "Он сказал \"привет\"".

Ваш ответ

Войдите, чтобы ответить на вопрос.