Понимание вывода print в Python: от простого к сложному

Раздел: Основы Python -> Понимание кода

Основной вариант: что произойдет при попытке вывести неопределенную переменную

Самый частый вопрос начинающих: что выведет программа, если написать print(name), не объявив предварительно переменную name? Python немедленно остановит выполнение и выдаст ошибку NameError: name 'name' is not defined. Это происходит потому, что интерпретатор ищет имя в текущей области видимости и, не найдя его, генерирует исключение.

print(name)

что выведет программа name python print name (что выведет программа с print на python)

NameError: name 'name' is not defined

Пояснение:

  • Функция print() принимает один или несколько объектов и выводит их в стандартный поток вывода.
  • Если в качестве аргумента передается неопределенное имя, Python сначала пытается вычислить его значение, что и вызывает ошибку.

Как вывести строку с именем переменной, а не её значение?

Иногда нужно вывести не значение переменной, а её имя как часть текста, например, для отладки. Для этого используют f-строки или метод format().

name = "Алиса"
print(f"name = {name}")
name = Алиса

В этом случае {name} внутри f-строки подставляет значение переменной, а слово name остается как литерал. Таким образом, вывод показывает и имя переменной, и её содержимое.

Типичная ошибка:

Забывают поставить префикс f перед строкой. Тогда {name} будет выведен буквально, без подстановки значения. Решение: всегда начинать f-строку с символа f.

Как избежать NameError, если переменная может не существовать?

Если вы не уверены, что переменная определена, можно использовать условную проверку или блок try/except.

try:
    print(name)
except NameError:
    print("Переменная name не определена")
Переменная name не определена

Также можно проверить наличие имени в глобальной или локальной области видимости с помощью locals() или globals().

if 'name' in locals():
    print(name)
else:
    print("name не существует в локальной области")

Проблема:

Использование locals() может не учесть переменные из внешних областей (например, замыкания). Более надежный способ -- блок try.

Как динамически вывести имя переменной через строку?

Иногда требуется получить имя переменной по её значению (например, для логирования). Прямого способа в Python нет, но можно обойтись словарём или функцией inspect.

import inspect

def var_name(var):
    for name, value in inspect.currentframe().f_back.f_locals.items():
        if value is var:
            return name
    return None

user = "Иван"
print(f"{var_name(user)} = {user}")
user = Иван

Этот метод находит имя переменной, анализируя локальное пространство имён вызывающего кадра. Обратите внимание: он вернёт только одно имя, если переменная имеет то же значение, что и другая.

Ограничения:

Функция var_name может вернуть неверное имя, если объект хранится под несколькими именами. Для отладки проще использовать f-строки с явным указанием имени.

Что выведет print без аргументов или с несколькими аргументами?

Вызов print() без аргументов выводит пустую строку (перевод строки). Если передать несколько аргументов, они выводятся через пробел (по умолчанию).

print()
print("Привет", "мир", 2025)
Привет мир 2025

Параметр sep позволяет изменить разделитель, а end -- завершающий символ.

Расширенные примеры вывода с print

Пример 1: Вывод имени модуля через __name__

В Python у каждого модуля есть атрибут __name__. Если скрипт запускается напрямую, он равен '__main__'. Это часто используют для организации кода.

Пример
# file: example.py
print("Имя модуля:", __name__)
if __name__ == '__main__':
    print("Скрипт запущен напрямую")
Имя модуля: __main__
Скрипт запущен напрямую

Пример 2: Вывод с форматированием f-строк для отладки

Современный стиль отладки -- использовать print(f"{var=}") (доступно с Python 3.8). Это выводит имя переменной и её значение.

Пример
x = 42
y = [1, 2, 3]
print(f"{x=}, {y=}")
x=42, y=[1, 2, 3]

Такой синтаксис автоматически подставляет имя переменной, что удобно для временных отладочных выводов.

Пример 3: Вывод в файл вместо консоли

С помощью параметра file можно перенаправить вывод print в файл.

Пример
with open('output.txt', 'w', encoding='utf-8') as f:
    print("Это запись в файл", file=f)

После выполнения в текущей папке появится файл output.txt с указанным текстом.

Пример 4: Продвинутый sep и end

Параметр sep управляет разделителем между аргументами, end -- символом после последнего аргумента. Это позволяет гибко управлять выводом.

Пример
print("one", "two", "three", sep=', ', end='.')
print(" End of list.")
one, two, three. End of list.

Обратите внимание: первый print не добавил переход на новую строку, поэтому второй print продолжил вывод в той же строке.

Пример 5: Вывод с использованием argparse и имя переменной

При написании скриптов, принимающих аргументы командной строки, часто нужно вывести имя переменной, в которую сохраняется значение. Для этого используют f-строки с явным именем.

Пример
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--name', default='Гость')
args = parser.parse_args()
print(f"args.name = {args.name}")

При запуске python script.py --name=Алиса вывод будет: args.name = Алиса

Что выведет программа с print на Python - comments

En
что выведет программа name python print name (python)