По умолчанию команда print() принимает несколько аргументов, выводит их через один пробел, после чего ставит перевод строки. Это поведение можно изменить, используя необязательные именованные параметры sep и end.

Параметр sep

Давайте рассмотрим следующий код:

print('aa', 'bb', 'cc')
print(1,2,3,4)

Результатом выполнения такого кода будет:

aa bb cc

Как вы можете заметить, все строки выводятся с пробелом между друг другом – это неслучайное поведение. У команды print() есть параметр, который отвечает за разделение аргументов при выводе. Этот параметр называется sep (separator – разделитель). По умолчанию этот параметр равен символу пробела  . Следующие строки кода являются эквивалентными:

print('aa', 'bb', 'cc')
print('aa', 'bb', 'cc', sep=' ')

Мы можем изменить параметр sep на любую другую строку, например, на символ звёздочки *.

Приведённый ниже код:

print('aa', 'bb', 'cc', sep='*')

выводит:

aa*bb*cc

Сейчас у нас аргументы разделены символом звёздочки *. Также в качестве параметра sep мы можем указать и переменную.

Допустим, приведённый ниже код:

minus = '-'
print('aa', 'bb', 'cc', sep=minus)

выводит:

aa-bb-cc

Таким образом, необязательный параметр sep команды print() позволяет установить строку, с помощью которой будут разделены аргументы (если их несколько) при печати.

Параметр end

Теперь давайте рассмотрим ситуацию, когда у нас не один print(), а несколько.

Приведённый ниже код:

print("A great man doesn't seek to lead.")
print("He's called to it. And he answers.")

выводит:

A great man doesn't seek to lead.
He's called to it. And he answers.

Как вы можете заметить, после каждого print() курсор переходит на новую строку. И это поведение тоже не является случайным, потому что у команды print() есть параметр end, определяющий, что нужно добавить в конец вывода. По умолчанию параметр end равен символу перевода строки (\n).

 Следующие строки кода являются эквивалентными:

print("A great man doesn't seek to lead.")
print("He's called to it. And he answers.")
print("A great man doesn't seek to lead.", end='\n')
print("He's called to it. And he answers.", end='\n')

Если перевод строки делать не нужно или требуется указать специальное окончание для вывода, то следует явно указать значение для параметра end (можем указать через переменную, как и с параметром sep).

Приведенный ниже код:

minus = '-'
print('a', 'b', 'c', end=minus)
print('second line')

выводит:

a b c-second line

По завершении печати первой команды print() вставлен символ - вместо символа перевода строки \n.

Таким образом, параметр end определяет строку, которая будет добавлена после вывода всех аргументов команды print().