Ошибка в Python: пропущены скобки в вызове 'print'
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Сообщение об ошибке SyntaxError: Missing parentheses in call to 'print' указывает на то, что вы используете функцию print
в стилистике Python 2, где скобки не требуются, в то время как работаете с версией Python 3, где вокруг аргументов функции print
должны стоять скобки:
print("Жизнь – это коробка шоколадных конфет.") # А вы знали, что это цитата из фильма "Форрест Гамп"?
Выясняем причину: Переход и совместимость
Миграция с Python 2 на Python 3 подразумевает адаптацию к некоторым изменениям: print
теперь – это функция, а не оператор. Такое обновление расширило гибкость языка, но также потребовало изменения в уже написанном коде.
Отличия синтаксиса print в Python 2 от Python 3
В Python 2 команда print
используется без скобок:
# Синтаксис Python 2
print "Власть всемогущая божественных замков Шаляпина!" # Цитата из книги Айзека Азимова "Я, робот"
В Python 3 применение скобок обязательно:
# Синтаксис Python 3
print("С кодом строго, но справедливо!") # Афоризм программиста
Приводим код Python 2 в совместимость с Python 3
Для совместимости кода на Python 2 с Python 3 используйте конструкцию from __future__ import print_function
:
# Совместимость с Python 2 и 3
from __future__ import print_function
print("Смотрите, без рук я код пишу!") # Мы научились пользоваться этой конструкцией
Возможности функции print в Python 3
В Python 3 функция print
поддерживает передачу любого числа аргументов и позволяет пользователю определять разделители и концовку строки:
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 3 words = ["Зима", "близко"] print(*words, sep=' ') # Утверждено Джоном Сноу
Перенаправление вывода в другие потоки:
# Python 3 import sys print("Произошла ошибка!", file=sys.stderr) # Теперь ошибка будет выводиться туда, куда надо
Как избежать частых ошибок
Ошибки, на которые стоит обратить внимание:
Игнорирование скобок:
# Python 3 print "О нет, я забыл про скобки." # Вывести текст не получится!
Смешение синтаксисов:
# Python 3 print "Я", "ещё", "жив,", "или", "уже", "в коде?" # Мысли в слух в коде
Чтобы избежать подобных ошибок, всегда используйте скобки и помните, что в Python 3 предпочтительнее писать чистый и понятный код.
Полезные материалы
- Вступление в Python 3.0 — почему
print
теперь является функцией. - 3. Неформальное введение в Python – Вывод данных — официальное руководство по использованию
print()
в Python 3. - Прекращение поддержки Python 2 — рекомендации для перехода на Python 3.
- Подробное руководство по функции Python print() – Real Python — полное описание функции
print()
благодаря Real Python. - Автоматизация рутинных задач на Python — практика использования
print
в различных сценариях. - 25.4. 2to3 – Автоматический перевод кода с Python 2 на Python 3 — советы по автоматизации процесса обновления кода для Python 3.