Недопустимая синтаксическая ошибка Flask-Script [дубликат]

Я знаю, что это поздний ответ, но я надеюсь помочь любому, у кого есть эта проблема. Я получал ту же ошибку и обнаружил, что мне пришлось вставить / перед моим файловым путем. Тогда исправленный вызов функции будет следующим:

FXMLLoader myLoader = new FXMLLoader(getClass().getResource("/createCategory.fxml"));
//                                                           ^
334
задан Peter Mortensen 5 June 2018 в 16:27
поделиться

5 ответов

Это сообщение об ошибке означает, что вы пытаетесь использовать Python 3, чтобы следовать примеру или запускать программу, которая использует оператор Python 2 print:

print "Hello, World!"

Вышеприведенное утверждение не работает в Python 3. В Python 3 вам нужно добавить круглые скобки вокруг значения, которое будет напечатано:

print("Hello, World!")

"SyntaxError: Отсутствие круглых скобок при вызове ' print '" - новое сообщение об ошибке, которое было добавлено в Python 3.4.2, в первую очередь, чтобы помочь пользователям, которые пытаются следовать учебнику Python 2 при запуске Python 3.

В Python 3, печать значения изменялись от того, чтобы быть отдельным заявлением как обычный вызов функции, поэтому теперь ему нужны скобки:

>>> print("Hello, World!")
Hello, World!

В более ранних версиях Python 3 интерпретатор просто сообщает об общей синтаксической ошибке, не предоставляя никаких полезных подсказки относительно того, что может пойти не так:

>>> print "Hello, World!"
  File "<stdin>", line 1
    print "Hello, World!"
                        ^
SyntaxError: invalid syntax

Что касается , почему print стал обычной функцией в Python 3, которая не касалась основной формы заявление, а скорее о том, как вы это сделали re сложными вещами, такими как печать нескольких элементов в stderr с конечным пространством, а не заканчивание строки.

В Python 2:

>>> import sys
>>> print >> sys.stderr, 1, 2, 3,; print >> sys.stderr, 4, 5, 6
1 2 3 4 5 6

В Python 3:

>>> import sys
>>> print(1, 2, 3, file=sys.stderr, end=" "); print(4, 5, 6, file=sys.stderr)
1 2 3 4 5 6

Начиная с выпуска Python 3.6.3 в сентябре 2017 года некоторые сообщения об ошибках, связанные с синтаксисом печати Python 2.x, были обновлены, чтобы рекомендовать их Python 3.x:

>>> print "Hello!"
  File "<stdin>", line 1
    print "Hello!"
                 ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Hello!")?
Это означает, Тем не менее, в настоящее время он не пытается выработать соответствующие кавычки для размещения вокруг этого выражения (это не невозможно, достаточно сложное, чтобы оно не было выполнено).

TypeError поднят для правый сдвиговый оператор также был настроен:

>>> print >> sys.stderr
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and '_io.TextIOWrapper'. Did you mean "print(<message>, file=<output_stream>)"?

Поскольку эта ошибка возникает при запуске кода, а не при компиляции, она не имеет доступа к исходному исходному коду и, следовательно, использует мета-переменные (<message> и <output_stream>) в предлагаемом замещающем выражении вместо того, что на самом деле набирается пользователем. В отличие от случая с синтаксической ошибкой, прямое размещение кавычек вокруг выражения Python в сообщении об ошибке пользовательского сдвига вправо.

526
ответ дан 8 revs, 4 users 75% 15 August 2018 в 23:40
поделиться
  • 1
    Я благодарю @ antti-haapala за добавление резюме наверху, которое напрямую отвечает на вопрос, прежде чем продолжить объяснение происхождения сообщения об ошибке :) – ncoghlan 11 May 2015 в 04:33
  • 2
    Я также переключил ответ на wiki сообщества, так как неуклонно накапливается дополнительная SO rep для этого, мне это не кажется правильным (см. bugs.python.org/issue21669 для фона о том, как сообщение об ошибке и это СО вопрос со-эволюционировал) – ncoghlan 13 May 2015 в 02:13
  • 3
    @StuartJeckel Одиночные и двойные кавычки не должны иметь значения, если они правильно спарены, но есть ряд синтаксических ошибок, которые могут быть вызваны несогласованными маркерами кавычек. – ncoghlan 9 December 2015 в 08:51
  • 4
    Здравствуйте! Я думаю, что этот инструмент может помочь кому-то docs.python.org/2/library/2to3.html – Jhonatas Kleinkauff 7 June 2016 в 22:58
  • 5
    Добавьте строку из future import print_function в ваш файл 2.7, чтобы добавить новые строки python 3 print () в ваш код. Следовательно, код становится совместимым с версиями 2.7+ и 3.0+ – Ralf 24 October 2016 в 11:20

Вне прямых ответов здесь следует отметить другое ключевое различие между python 2 и 3. Официальная версия python wiki затрагивает почти все основные отличия и фокусируется на том, когда вы должны использовать либо версий. Это сообщение в блоге также прекрасно описывает объяснение текущей вселенной python и как-то нераскрытую загадку перехода на python 3.

Насколько я могу судить, вы начинаете изучите язык python. Вы должны рассмотреть вышеупомянутые статьи, прежде чем продолжить путь python 3. Вам не только придется изменить какой-то из ваших синтаксисов, вам также нужно будет подумать о том, какие пакеты будут доступны вам (преимущество python 2) и потенциальные оптимизации, которые могут быть сделаны в вашем коде (преимущество python 3) .

0
ответ дан Chad Van De Hey 15 August 2018 в 23:40
поделиться

Изменяется синтаксис с Python 2 на Python 3. В Python 2,

 print "Hello, World!" will work but

В Python 3 используйте фигурные скобки как

print("Hello, World!")

Это эквивалентно синтаксис для Scala и рядом с Java.

9
ответ дан Peter Mortensen 15 August 2018 в 23:40
поделиться
12
ответ дан Peter Mortensen 5 September 2018 в 23:20
поделиться
15
ответ дан Peter Mortensen 29 October 2018 в 06:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: