Найти в Дзене

Тема урока: sep, end

Аннотация. Урок посвящен изучению необязательных параметров команды print() и дополнительным возможностям переменных. Также мы поговорим о комментариях и стандарте PEP 8, которого придерживаются Python-программисты. По умолчанию команда print() принимает несколько аргументов, выводит их через один пробел, после чего ставит перевод строки. Это поведение можно изменить, используя необязательные именованные параметры sep и end. Давайте рассмотрим следующий код: print('aa', 'bb', 'cc') Результатом выполнения такого кода будет: aa bb cc Как вы можете заметить, все строки выводятся с пробелом между друг другом – это неслучайное поведение. У команды print() есть параметр, который отвечает за разделение аргументов при выводе. Этот параметр называется sep (separator – разделитель). По умолчанию этот параметр равен символу пробела  . Следующие строки кода являются эквивалентными: print('aa', 'bb', 'cc') print('aa', 'bb', 'cc', sep=' ') Мы можем изменить параметр sep на любую другую строку, нап
Оглавление

Тема урока: sep, end

  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() позволяет установить строку, с помощью которой будут разделены аргументы (если их несколько) при печати.
Таким образом, необязательный параметр 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().
Таким образом, параметр 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