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