Вступление
Функция 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()
может печатать несколько значений одновременно, может
принимать нестроковые значения и более удобна для разработчиков.
Заключение
В этой статье мы изучили различные способы вывода значений без символа новой строки / возврата каретки. Эта стратегия может оказаться весьма удобной при печати элементов выходных данных алгоритмов, таких как двоичное дерево, или при печати содержимого списка рядом друг с другом.