Print() in Python
A guide to printing and formatting your scripts output.
![]()
Basics
We all start here:
If you want to separate the output into different lines, just use \n
Numbers require you to cast them as strings :
And of course you can wrap everything in a function and print the output:
Printing is also a very handy way to inspect variables and objects:
Objects/classes are slightly more complex because you need to differentiate between the class itself and the instance/ instance method :
Как сделать так, чтобы каждый раз вывод был с новой строки
Чтобы каждый раз переменная prasa выводилась с новой строки.
Рассмотрим функцию print: Она имеет аргументы *objects, sep=’ ‘, end=’\n’, flush=False . flush и sep нам не важны. Аргумент end, обозначающий заключающие символы вывода, как было показано ранее по умолчанию имеет значение переноса строки ( \n ). Поэтому, вам не нужно ничего делать для того, чтобы каждый новый print был с новой строки.
На всякий случай, если вам необходим вывод через строчку, то передавайте строчку с переносом строки, вот так:
Возможно, вы неправильно сформулировали вопрос и вам нужен вывод с новой строки каждый раз. Тогда вам тоже ничего не нужно делать. Вводя значение, вы клавишей Enter сами переносите строку.
Зная то, что вы ввели еще одну переменную, вероятно то, что вам нужно несколько раз повторить prasa. В таком случае тоже все просто:
Функция Print в Python
Каждый, кто изучает язык программирования Python, начинает с функции print() , выводя с ее помощью на экран первое сообщение — "Привет, мир!". Ее можно использовать для вывода текстовых сообщений, однако ошибочно полагать, что это все, что нужно знать о print() в Python.
Функция print() в языке Питон предназначена для вывода заданных объектов на стандартное устройство вывода — обычно экран, также может отправлять их в файл.
Синтаксис
Рассмотрим синтаксис этой функции. Самый простой пример:
Даже если функция не получает никаких аргументов, все равно необходимо вставлять после названия пустые скобки, что значит для интерпретатора выполнить функцию, а не просто ссылаться на нее.
В результате этого будет выведен неотображаемый символ пустой строки, она появиться на экране, не нужно путать это с пустой строкой, в которой вообще нет никаких символов.
Но чаще всего нужно передать какое-то сообщение пользователю, к примеру:
Параметры
Как было сказано, print() можно вызывать без всяких аргументов при необходимости создать пустую строку, или указывать один аргумент для вывода сообщения. Кроме того, функция может принимать любое количество позиционных аргументов, разделяя их запятой, что очень удобно при необходимости объединения нескольких элементов.
Полная версия print выглядит так:
- *objects — объект/объекты которые необходимо вывести;
- sep — разделитель между объектами. В качестве своего значения можно передавать строку или None (по умолчанию пробел " ");
- end — символ в конце строки (по умолчанию перенос строки \n);
- file — file-like объект [поток] (по умолчанию sys.stdout);
- flush — принудительный сброс потока [работает с версии Python 3.3] (по умолчанию False).
Пример использования функции print
Самый простой пример:
Следующий пример – вывод строкового значения из переменной:
Выведем разные типы:
Ниже — пример использования параметра sep :
Если функция должна выводить аргументы в виде отдельных строк, можно передать символ экранирования:
Более полезный пример — вывод аргументов в виде пути к файлу:
Второй необязательный параметр — end. Он позволяет предотвратить разрыв строки, когда выведенное сообщение не должно заканчиваться символом новой строки. Для этого передается пустая строка:
print('Checking file integrity. ', end='') print('ok') Checking file integrity. ok
Как и в случае с sep , end можно использовать для объединения отдельных фрагментов в один большой. При этом вместо объединения аргументов текст из каждого вызова функции будет располагаться в одной строке:
>>> print('The first sentence', end='. ') >>> print('The second sentence', end='. ') >>> print('The last sentence.') The first sentence. The second sentence. The last sentence.
При необходимости можно указывать одновременно два ключевых аргумента:
Еще одни параметры print() — file и flush . В примере ниже реализована запись логов в файл порциями. С помощью параметра file данные выводятся не на экран, а в файл. Flush незамедлительно сбрасывает накопленный буфер в файл каждые 10 итераций.
import time source_file = open('parse.txt', 'w') for i in range(0, 30): if i % 10 == 0 and i > 0: print(f"iteration #", file=source_file, flush=True) else: print(f"iteration #", file=source_file) time.sleep(1) source_file.close()
Кодировка
Функция print() в Python 3 и выше никак не контролирует кодировку символов — это определяется потоком кода. В большинстве случаев нет необходимости менять кодировку, так как по умолчанию используется UTF-8.
В Python 2 кодировка зависит от того, данные какого типа выводятся на экран. При выводе текста кириллицей рекомендуется указывать способ кодировки:
Системную кодировку можно узнать через sys.stdout.encoding :
Буферизация ввода-вывода
Блочная буферизация (block-buffered)
Операции ввода и вывода иногда буферизуются с целью повышения производительности. Рассмотрим пример:
import time num_seconds = 1 for countdown in reversed(range(num_seconds + 1)): if countdown > 0: print(countdown, end=". ") time.sleep(1) else: print('Go!')
В качестве конца строки мы используем ". ". В такой реализации функция print() будет накапливать строки в буфер, и выведет сразу весь результат после вызова print('Go!')
Линейная буферизация (line-buffered)
Линейная буферизация потока, перед началом ввода/вывода, ожидает момента, пока в буфере не появится разрыв строки. Изменив print() в примере выше на следующий:
мы увидим последовательную печать на экран:
Небуферизированный вывод (unbuffered)
Unbuffered поток соответствует своему названию — никакой буферизации не происходит, операция ввода/вывода выполняются без промедления. Для этого достаточно переписать print() из примера выше следующим образом:
print(countdown, end='. ', flush=True)
Тем самым функция print() принудительно очищает поток, не ожидая символа новой строки в буфере.
Стилизированный print
pprint
С помощью модуля pprint, который входит в стандартную библиотеку Python, можно более наглядно отображать некоторые объекты, при этом структура их сохраняется.
Один из примеров использования модуля — словарь со вложенными словарями:
вместо длинной строки будет отображен так:
Есть необязательный параметр depth и indent. Depth указывает — ключи какого уровня вложенности отображать, скрытые уровни будут заменены на троеточие. Indent устанавливает размер отступов:
reprlib
Модуль reprlib позволяет использовать функцию repr() , благодаря которой сокращается отображение глубоко вложенных или больших контейнеров, а также множества рекурсивных вызовов:
>>> import reprlib >>> reprlib.repr([x**10 for x in range(5)]) '[0, 1, 1024, 59049, 1048576]'
json.dumps
Словари часто представляют собой данные JSON, широко используемые во всемирной сети. Для правильной стилизации словаря в строку JSON можно воспользоваться одноименным модулем, который имеет хорошие возможности печати:
Цвет (управляющие коды ANSI)
Для выделения важной информации при выводе текста можно воспользоваться возможностью форматировать текст с помощью ANSI кодов. Это может выглядеть как " \033[31m ", где \033 — указание на то, что дальше описывается управляющий код, [31m – задание красного цвета текста.
def out_red(text): print("\033[31m <>".format(text)) def out_yellow(text): print("\033[33m <>".format(text)) def out_blue(text): print("\033[34m <>".format(text)) out_red("Вывод красным цветом") out_yellow("Текст жёлтого цвета") out_blue("Синий текст")
Чтобы такой вариант работал не только на Linux, но и на Windows, необходимо активировать поддержку ANSI для stdout в запущенной консоли, делается это так:
import ctypes kernel32 = ctypes.windll.kernel32 kernel32.SetConsoleMode(kernel32.GetStdHandle(-11), 7)
Анимация (прелоадеры)
Чтобы сделать интерфейс программы более привлекательным, можно анимировать его. Например, используя preloader, пользователь будет знать, что программа все еще работает.
Вращающееся колесо
Одним из примеров прелоадера является вращающее колесо, что указывает на незавершенную работу, когда точно не известно, сколько времени осталось до завершения запущенной операции. Часто такой прием используется во время загрузки данных с сети, устанавливая простую анимацию движения из последовательности нескольких символов, циклически повторяющихся:
from itertools import cycle from time import sleep for frame in cycle(r'-\|/-\|/'): print('\r', frame, sep='', end='', flush=True) sleep(0.2)
Progress Bar
Если же время до завершения операции известно или же есть возможность определить процент выполнения задачи, можно установить анимированный прелоадер. В таком случае необходимо определить, сколько знаков "#" нужно отобразить и сколько пробелов вставить. После этого текст удаляется и строится сначала:
from time import sleep def progress(percent=0, width=30): left = width * percent // 100 right = width — left print('\r[', '#' * left, ' ' * right, ']', f'
Best practice
Как убрать пробелы в print() Многие начинающие Python разработчики забывают о том, что разделителем у функции print() по умолчанию является пробел (" ")
name = input() print("Hello,", name, '!') # Hello, Alex !
Для удаления пробела, используйте параметр sep :
Python print to file (печать в файл) При необходимости записать какой-то объект в файл можно воспользоваться стандартными возможностями функции print() :
1 открыть нужный файл для записи, вовсе не обязательно создавать его вручную, следующий код сделает это автоматически:
2 записать нужное значение в открытый файл:
print("I'm starting to learn the language Python", file = sample)
3 закрыть файл после окончания операции:
В результате этого будет создан обычный текстовый файл с записанным значением, работать с которым можно будет точно так же, как и с созданным самостоятельно.
Таким образом, несмотря на свою кажущуюся простоту, стандартная функция для вывода print() имеет немало скрытых возможностей, некоторые из которых были рассмотрены.
Ввод и вывод данных в Python
Для вывода данных в Python используется функция print(), а для получения пользовательского ввода — функция input().
Вывод в Python
В Python мы можем просто использовать функцию print() для вывода данных. Например:
Здесь функция print() выводит строку, заключенную в одинарные кавычки.
Синтаксис функции print():
Функция print() может иметь 5 параметров:
object — значение(я) для вывода;
sep (от «separator», необязательно) — позволяет разделить несколько объектов для вывода внутри функции print();
end (необязательно) — позволяет добавлять специальные значения, например, новая строка ‘\n’ или отступ ‘\t’ ;
file (необязательно) — позволяет указать место для вывода данных. По умолчанию используется значение sys.stdout (экран).
flush (необязательно) — логическое значение, указывающее, сбрасывается ли вывод или буферизуется. По умолчанию используется значение False .
Пример №1: Функция print() с одним параметром
Good Morning!
It is rainy today
Здесь функция print() имеет только 1 параметр — объект для вывода. Поскольку параметр end не указан, то используется значение по умолчанию ‘\n’ . Таким образом, мы получаем вывод в двух разных строках.
Пример №2: Функция print() с параметром end
Good Morning! It is rainy today
Обратите внимание, что мы добавили параметр end= ‘ ‘ в функцию print(). Следовательно, мы получаем вывод в одной строке, разделенной пробелом.
Пример №3: Функция print() с параметром sep
New Year. 2023. See you soon!
Здесь в функции print() используется сразу несколько элементов для вывода, разделенных запятой. Обратите внимание, что мы также добавили необязательный параметр sep= ‘. ‘ , который позволил вывести элементы через точку (а не через запятую).
Пример №4: Вывод переменных и литералов в Python
Функция print() также может использоваться для вывода переменных. Например: