TGViewer
Zen of Python Zen of Python @zen_of_python · 18.8K subscribers
Post #3747 2.9K
print: база + интересные факты

Синтаксис:
print([object, ...][, sep=’ ‘][, end=’\n’][, file=sys.stdout]

Параметры sep, end и file, если они необходимы, должны передаваться в виде именованных аргументов, то есть с использованием специального синтаксиса «имя=значение». Их могут указывать в любом порядке в вызове функции, но после объектов, предназначенных для вывода, и определяют параметры вывода:

— sep – строка, которая должна вставляться между объектами при выводе. По умолчанию состоит из одного пробела. Чтобы подавить вывод строки разделителя, в этом аргументе следует передать пустую строку.

— end – строка, добавляемая в конец выводимого текста. По умолчанию содержит символ конца строки \n. Если в этом аргументе передать пустую строку, следующий вызов функции print начнет вывод текста с позиции, где закончился вывод текущей строки.

— file – объект файла, стандартный поток или другой объект, похожий на файл, куда будет выводиться текст.

with open('output.txt', 'w') as f:
  # Используем print для записи в файл с немедленным сбросом буфера
  print("Hello, World!", file=f, flush=True)

Функция print получает текстовое представление объекта с помощью встроенной функции str. Это может привести к неожиданным результатам на выводе: «сплющенные» массивы, ссылка на объект в памяти (<__main__.NoStrClass object at 0x...>) вместо самого «контента».

Интересные факты:

— В Python 2.X print – это инструкция, в Python 3.X встроенная функция, которая принимает именованные аргументы. Поэтому в 3.X и появились скобки.
— Можно перечислять очень много аргументов:
print("Python", "is", "fun!")
— Для «красивого» вывода сложных объектов можно использовать pprint
— Дебаггинг с print называется «волчья стена» (раньше для отлова волков на огороженной земле возводили забор по середине, чтобы отсечь половину территории, где мог находиться хищник, и так «половинили» до излова)
— Если вы получаете <main.MyClass object at 0x...> вместо самих данных, значит, в кастомном классе того или иного инструмента нет встроенного метода __str__  / __repr__. Тут нет единой формулы решения, однако StackOverflow полнится подобными вопросами.

@zen_of_python
  • 👍 4
More from @zen_of_python
  1. Oct 1, 2026Как не сломать pickle собственным исключением Python Если конструктор исключения принимает…
  2. Oct 1, 2026Как выстроить защиту цепочки поставок Python Эшелонированная схема защиты начинается с соб…
  3. Sep 30, 2026Пакетная обработка в Python: где strict=True не спасает запись С Python 3.12 itertools.bat…
  4. Sep 30, 2026Как воспроизводить гонки потоков Python с помощью blanket Обычно порядок выполнения потоко…
  5. Sep 30, 2026Как отменять задачи в heapq и сохранять порядок при равных приоритетах heapq сравнивает ко…
  6. Sep 29, 2026Как битовые множества сокращают память моделей Pydantic Explicit is better than implicit,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →