Автор оригинала: Sathiya Sarathi Gunasekaran.
Вступление
Функция print()
в Python добавляет новую строку к выходным данным при отображении на tty (teletypewriter A. K. A the terminal). Если вы не хотите, чтобы ваше сообщение отображалось с новыми строками или пробелами, как вы можете изменить поведение print()
?
Этого можно легко достичь, изменив значения по умолчанию параметров sep
и end
функции print ()
.
Печать без новой строки
До версии Python 2.x print
было зарезервированным ключевым словом, которое действует как специальный оператор. Начиная с Python версии 3.x, команда print
превратилась в функцию.
Эта версия print()
способна принимать следующие аргументы:
Значения ( value1
, value2
), упомянутые выше, могут быть любой строкой или любым из типов данных, таких как list, float, string и т. Д. Другие аргументы включают разделитель ( 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>>>
Вот как вы можете использовать функцию Python версии 3 print()
в Python 2.x.
Использование stdout.писать()
Модуль 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()
может печатать несколько значений одновременно, может принимать нестроковые значения и более дружелюбна к разработчикам.
Вывод
В этой статье мы рассмотрели различные способы печати значений без возврата символа новой строки/каретки. Эта стратегия может оказаться весьма полезной при печати элементов в выходных данных алгоритмов, таких как двоичное дерево или печать содержимого списка рядом друг с другом.