Статья Автор: Александр Ф. Алейников

2.3.1 sep, end, PEP 8

sep, end, PEP 8

  1. Необязательные параметры команды print()sep, end
  2. Множественное присваивание
  3. Стандарт PEP 8
  4. Комментарии

Аннотация. Урок посвящен изучению необязательных параметров команды print() и дополнительным возможностям переменных. Также мы поговорим о комментариях и стандарте PEP 8, которого придерживаются Python-программисты.

Необязательные параметры команды print

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

Параметр sep

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

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

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

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().

Примечания

Примечание 1. Вызов команды print() с пустыми скобками делает перевод строки.

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

print('Python')
print()
print('C#')
print('Java')
print()
print('JavaScript')

выводит:

Python

C#
Java

JavaScript

Примечание 2. Последовательность символов \n называется управляющей последовательностью и задаёт перевод строки.

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

print('a', '\n', 'b', '\n', 'c', sep='*', end='#')

выводит:

a*
*b*
*c#

Примечание 3. Параметры sep и end можно устанавливать одновременно.

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

print('a', 'b', 'c', sep='*', end='finish')

выводит:

a*b*cfinish

Примечание 4. Для разных команд print() можно задавать разные параметры sep и end.

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

arg1 = 'Hello'
sep1 = '_-_'
end2 = '+++'

print(arg1, 'everyone', sep=sep1, end='! ')
print('How', 'are', 'you', 'in', '2024?', sep=' ', end=end2)

выводит:

Hello_-_everyone! How are you in 2024?+++

Примечание 5. Чтобы убрать все дополнительные выводимые символы, можно установить параметры sep и end команды print() как пустые строки ('').

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

print('a', 'b', 'c', sep='', end='')
print('d', 'e', 'f', sep='', end='')

выводит:

abcdef

Примечание 6. Если после вывода данных нужно более одного перевода строки, то можно использовать следующий код:

print('Python', end='\n\n\n')

Примечание 7. Мы не можем указывать параметры sep и end перед аргументами, так как именованные параметры всегда должны следовать после позиционных аргументов. Подробнее эту тему мы разбираем в курсе для продвинутых, сейчас же рекомендуем вам просто запомнить.

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

print('5', '+', sep='_', '5', end='!!!', '=', '10')

приводит к возникновению ошибки:

SyntaxError: positional argument follows keyword argument

Примечание 8. Параметр sep является разделителем для нескольких аргументов в команде print().

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

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

print('Python', sep='777')

выводит:

Python
Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать