sep, end, PEP 8
- Необязательные параметры команды
print()
: sep
, end
- Множественное присваивание
- Стандарт PEP 8
- Комментарии
Аннотация. Урок посвящен изучению необязательных параметров команды 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