Как работает функция print в Python
Рассмотрели функцию print в Python и рассказали о её работе. Описали, что такое аргументы print, зачем они нужны и как их использовать.
55К открытий79К показов
Функция print()
в Python используется для вывода текстовой информации на экран или в консоль. Эта функция может принимать один или несколько аргументов. Одним из обязательных аргументов является строка или объект, который будет выведен.
Вы наверняка знакомы с этой функцией. С неё начинается любой урок по программированию на Python.
В данном случае функция выведет в консоль сообщение:
При этом обязательно использовать скобки, иначе возникнет синтаксическая ошибка. В Python 2 скобки можно было не указывать, но в Python 3 скобки необходимы. Всё потому, что в третьей версии print()
— это функция, а не инструкция.
Убедимся, что перед нами действительно функция, и спросим Python:
Python ответит нам, что перед нами встроенная функция или метод.
Аргументы print() в Python
Аргументы функции print()
позволяют изменять способ форматирования сообщений и управлять стилем вывода.
Вот полный синтаксис функции, скрытый от наших глаз:
Аргументы функции здесь — это sep
, end
, file
и flush
:
- sep позволяет задать разделитель, который будет выводиться между элементами, переданными в функцию print(). По умолчанию разделителем является пробел, но с помощью sep пробел можно заменить на другой разделитель, к примеру, на запятую.
- end позволяет определять символ, который будет добавлен в конец сообщения после вывода. По умолчанию это символ перевода строки. Поменять его можно, к примеру, на точку с запятой.
- file позволяет перенаправить вывод текста в нужный вам файл. По умолчанию функция выводит текст в консоль, в которой вы и задаёте команды Python. Аргумент file полезен, если нужно сохранить вывод для дальнейшего использования.
- flush позволяет управлять буферизацией вывода. Если этот аргумент установлен в True, то вывод не будет буферизоваться и будет выводиться немедленно.
Рассмотрим эти аргументы чуть подробнее.
Аргумент sep в функции print() на Python
Как мы уже поняли, sep
отвечает за то, какой символ будет отделять друг от друга элементы вывода. По умолчанию, если sep
не поменять, этот символ будет пробелом.
Попросим Python вывести на экран слова, не меняя при этом sep
.
Убеждаемся, что sep
по умолчанию — это пробел. На экране появится такое сообщение:
Теперь попробуем заменить дефолтный пробел в sep
на что-то другое. Используем символы \n
в качестве разделителя в аргументе sep
. Они должны перенести каждый следующий элемент выдачи на новую строку.
Получается вот такой вывод функции:
Как и ожидалось, после каждого слова в выводе строка переносится, ведь разделителем мы назначили именно перенос строки. ?
Аргумент end в функции print() на Python
Аргумент end
— это суть то же самое, что и sep
. Разница только в том, что sep
— это разделитесь между элементами вывода, а end
— это разделитесь самих выводов разных функций print()
, если их несколько.
По умолчанию end
— это перенос строки. Его тоже можно заменить на любое другое удобное значение.
Вот, как выглядит стандартный вывод функций print()
, если не менять аргумент end
.
Попробуем заменить перенос строки в аргументе end
на обычный пробел.
Вывод с обычным пробелом вместо переноса строки:
Аргумент file в функции print() на Python
Аргумент file
позволяет записывать данные вывода в файлы с расширением txt или csv.
По умолчанию значение аргумента file
указано как sys.stdout
. Это — вывод значений непосредственно в консоль Python.
Допустим, нам нужно, чтобы по завершении программа записала вывод в файлик print.txt. Для этого напишем простую программу, которая:
- откроет файл print.txt;
- запишет данные вывода в файл;
- закроет файл print.txt.
Результатом выполнения этого кода станет появление файла print.txt. Внутри него должно оказаться:
Аргумент flush в функции print() на Python
Аргумент flush
в функции print()
в Python позволяет управлять выводом сообщений без задержек.
Дело в том, что по умолчанию программа будет записывать данные вывода из print()
сперва в буфер обмена, а уже потом выводить данные в консоль или в файл.
По умолчанию аргумент flush
установлен в значении False
.
Когда значение аргумента flush
установлено в True
, Python выводит сообщение, не дожидаясь буферизации вывода. Это полезно, когда нужно мгновенно показать вывод в консоли или в файле.
В этом примере мы записали вывод Hello, world!
в файл output.txt без буферизации, установив значение аргумента flush
как True
.
Однако с этим аргументом нужно быть осторожным:
- Если возникнет ошибка в выполнении программы, а аргумент flush установлен как True, результат вывода может быть утерян. Он не сохранится в буфере из-за значения True и не отобразится в консоли или в файле из-за ошибки.
- Использование flush=True при работе с несколькими потоками может привести к тому, что разные потоки будут пытаться выводить данные в поток вывода одновременно. Это приведет к ошибкам.
Использование flush=True
без должной осторожности может создать проблемы в работе программы и усложнить отладку. Если нет необходимости в ручной записи данных в поток вывода, лучше не использовать этот параметр.
В общем, аргументы функции print()
позволяют управлять тем, как сообщения выводятся на экран и в консоль, и как они форматируются и выводятся. Это делает print()
очень универсальной функцией, которую можно использовать во многих различных ситуациях.
55К открытий79К показов