logo

Ошибка в Python: пропущены скобки в вызове 'print'

Быстрый ответ

Сообщение об ошибке SyntaxError: Missing parentheses in call to 'print' указывает на то, что вы используете функцию print в стилистике Python 2, где скобки не требуются, в то время как работаете с версией Python 3, где вокруг аргументов функции print должны стоять скобки:

Python
Скопировать код
print("Жизнь – это коробка шоколадных конфет.") # А вы знали, что это цитата из фильма "Форрест Гамп"?

Выясняем причину: Переход и совместимость

Миграция с Python 2 на Python 3 подразумевает адаптацию к некоторым изменениям: print теперь – это функция, а не оператор. Такое обновление расширило гибкость языка, но также потребовало изменения в уже написанном коде.

Отличия синтаксиса print в Python 2 от Python 3

В Python 2 команда print используется без скобок:

Python
Скопировать код
# Синтаксис Python 2
print "Власть всемогущая божественных замков Шаляпина!"  # Цитата из книги Айзека Азимова "Я, робот"

В Python 3 применение скобок обязательно:

Python
Скопировать код
# Синтаксис Python 3
print("С кодом строго, но справедливо!")  # Афоризм программиста

Приводим код Python 2 в совместимость с Python 3

Для совместимости кода на Python 2 с Python 3 используйте конструкцию from __future__ import print_function:

Python
Скопировать код
# Совместимость с Python 2 и 3
from __future__ import print_function
print("Смотрите, без рук я код пишу!")  # Мы научились пользоваться этой конструкцией

Возможности функции print в Python 3

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

Python
Скопировать код
print("Привет", "Мир", sep=", ", end="!\n")  # Теперь можно гораздо больше

Изменения в сообщениях об ошибках начиная с Python 3.4.2

С Python 3.4.2 отсутствие скобок в вызове print стало вызывать ошибку SyntaxError. После Python 3.6.3 сообщения об ошибках, связанные с синтаксисом Python 2.x, стали более информативными и понятными.

Визуализация

Ошибка SyntaxError можно сравнить с несоответствующими элементами пазла:

Элемент пазла Python 2.x: print "Привет, Мир" Пазл для Python 3.x: print("Привет, Мир")

Соответствия нет! 🧩❌🧩

🐍 Чтобы подобрать подходящий элемент в Python 3.x, требуются скобки — подобно тому, как штырь и отверстие должны быть одной формы.

Вот как это должно выглядеть:

Идеальное соответствие! 🧩✅🧩

print("Привет, Мир") # Скобки привели к зацеплению элементов пазла

Благодаря скобкам ваш код становится завершенным пазлом. 🖼️✨

Дополнительные моменты: Расширенные возможности в Python 3

В Python 3 функция print демонстрирует гибкость и читаемость кода.

  • Распаковка аргументов:

    Python
    Скопировать код
      # Python 3
      words = ["Зима", "близко"]
      print(*words, sep=' ')  # Утверждено Джоном Сноу
  • Перенаправление вывода в другие потоки:

    Python
    Скопировать код
      # Python 3
      import sys
      print("Произошла ошибка!", file=sys.stderr)  # Теперь ошибка будет выводиться туда, куда надо

Как избежать частых ошибок

Ошибки, на которые стоит обратить внимание:

  • Игнорирование скобок:

    Python
    Скопировать код
      # Python 3
      print "О нет, я забыл про скобки."  # Вывести текст не получится!
  • Смешение синтаксисов:

    Python
    Скопировать код
      # Python 3
      print "Я", "ещё", "жив,", "или", "уже", "в коде?"  # Мысли в слух в коде

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

Полезные материалы

  1. Вступление в Python 3.0 — почему print теперь является функцией.
  2. 3. Неформальное введение в Python – Вывод данных — официальное руководство по использованию print() в Python 3.
  3. Прекращение поддержки Python 2 — рекомендации для перехода на Python 3.
  4. Подробное руководство по функции Python print() – Real Python — полное описание функции print() благодаря Real Python.
  5. Автоматизация рутинных задач на Python — практика использования print в различных сценариях.
  6. 25.4. 2to3 – Автоматический перевод кода с Python 2 на Python 3 — советы по автоматизации процесса обновления кода для Python 3.