Это сообщение об ошибке означает, что вы пытаетесь использовать Python 3, чтобы следовать примеру, или запустить программу, которая использует print
оператор Python 2 :
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, это не относилось к базовой форме оператора, а скорее к тому, как вы делали более сложные вещи, такие как печать нескольких элементов в 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 в пользовательском сообщении об ошибке правого сдвига просто.
К сожалению, старый комикс xkcd больше не полностью обновлен.
Начиная с Python 3.0 вы должны написать:
И кто-то еще должен написать эту
antigravity
библиотеку :(источник
Существует изменение в синтаксисе с Python 2 на Python 3. В Python 2
будет работать, но в Python 3 используйте круглые скобки как
Это эквивалентный синтаксис для Scala и рядом с Java.
источник
Если ваш код должен работать как в Python 2, так и в 3, вы можете достичь этого, загрузив его в начале вашей программы:
Затем вы можете распечатать в Python 3 способом:
Если вы хотите напечатать что-то без создания новой строки - вы можете сделать это:
источник
В Python 3 вы можете печатать только как:
Но в Python 2 скобки не обязательны.
источник
В основном, начиная с Python 3.x, вам нужно использовать
print
круглые скобки.Python 2.x : печать "Властелин колец"
Python 3.x : печать («Властелин колец»)
Explaination
print
было заявление в 2.x , но это функция в 3.х . Теперь для этого есть ряд веских причин.источник
Я мог бы также просто добавить, что я знал все об изменении синтаксиса между
Python2.7
иPython3
, и мой код был правильно написан какprint("string")
и дажеprint(f"string")
...Но после некоторого времени отладки я понял, что мой bash-скрипт вызывает python:
который по умолчанию вызывал мой скрипт на python, используя
python2.7
который дал ошибку. Поэтому я изменил свой bash-скрипт на:который из грубо использует python3 для запуска скрипта, который исправил ошибку.
источник
Помимо прямых ответов здесь, следует отметить другое ключевое отличие между python 2 и 3. Официальная вики по питону раскрывает почти все основные различия и фокусируется на том, когда вам следует использовать любую из версий. Этот пост также прекрасно объясняет текущую вселенную Python и неразрешимую загадку перехода на Python 3.
Насколько я могу судить, вы начинаете изучать язык Python. Вы должны рассмотреть вышеупомянутые статьи, прежде чем продолжить движение по маршруту Python 3. Вам нужно будет не только изменить часть своего синтаксиса, но и подумать о том, какие пакеты будут вам доступны (преимущество Python 2) и возможных оптимизациях, которые могут быть сделаны в вашем коде (преимущество Python 3). ,
источник