Вступление
Функция print() в Python добавляет новую строку к выводу при
отображении на tty (телетайп AKA терминал). Если вы не хотите, чтобы
ваше сообщение отображалось с новой строкой или пробелами, как вы можете
изменить поведение print() ?
Этого легко добиться, изменив значения по умолчанию для параметров sep
и end функции print() .
Печать без новой строки
До версии Python 2.x print была зарезервированным ключевым словом,
которое действует как специальный оператор. Начиная с версии Python 3.x,
команда print превратилась в функцию.
Эта версия print() может принимать следующие аргументы:
{.ezlazyload}
Значения ( value1 , value2 ), упомянутые выше, могут быть любой
строкой или любыми типами данных, такими как список, число с плавающей
запятой, строка и т. Д. Другие аргументы включают разделитель ( sep ),
используемый для разделения значений, заданных в качестве аргументов,
тогда как end по умолчанию символ новой строки \n Это причина того,
почему всякий раз, когда print() , курсор перемещается на следующую
строку.
В Python 3.x самый простой способ печати без новой строки - установить
end аргумент как пустую строку, то есть '' . Например, попробуйте
выполнить следующий фрагмент в интерпретаторе Python:
print("I am a sentence", "I am also a sentence")
Интерпретатор выведет следующее:
I am a sentence I am also a sentence
>>>
Мы печатаем две строки, поэтому Python будет использовать значение sep
, пустое пространство по умолчанию, чтобы печатать их вместе. Python
также добавляет в конец символ новой строки, поэтому приглашение
интерпретатора переходит в конечную строку.
Теперь измените предыдущий оператор, чтобы он выглядел так:
print("I am a sentence", "I am also a sentence", sep="; ", end="")
Выполнив его в интерпретаторе, вы получите результат, похожий на:
I am a sentence; I am also a sentence>>>
Здесь произошло две вещи - разделитель между двумя строками теперь также включает точку с запятой. Приглашение интерпретатора также появляется в той же строке, потому что мы удалили автоматически добавляемый символ новой строки.
Печать без новой строки в Python 2.X
Для более ранних версий Python - меньше 3, но больше 2.6 - вы можете
импортировать print_function из модуля __future__ Это будет
перекрывать существующую print ключевого слова с print() функции ,
как показано ниже:
from __future__ import print_function
print("I am a sentence", "I am also a sentence", sep="; ", end="")
Это также даст:
I am a sentence; I am also a sentence>>>
Вот как вы можете использовать print() Python версии 3 в Python 2.x.
Использование stdout.write ()
Модуль sys имеет встроенные функции для записи непосредственно в файл
или tty . Эта функция доступна для версий Python 2.x и 3.x. Мы можем
использовать метод write() stdout модуля sys для печати на консоли
следующим образом:
import sys
sys.stdout.write("I am a line")
Давайте выполним это и посмотрим на результат:
I am a line>>>
Хотя это дает результат того, чего мы пытаемся достичь, существует
довольно много различий между функцией write() print() . Функция
print() может печатать несколько значений одновременно, может
принимать нестроковые значения и более удобна для разработчиков.
Заключение
В этой статье мы изучили различные способы вывода значений без символа новой строки / возврата каретки. Эта стратегия может оказаться весьма удобной при печати элементов выходных данных алгоритмов, таких как двоичное дерево, или при печати содержимого списка рядом друг с другом.