Перейти к содержимому
Теория · Первая программа · урок 2 из 7

Функция print

Вспомните машину python с лентой из прошлого урока: каждый вызов print печатает на ленте одну строку. Часто в эту строку нужно поместить несколько частей — подпись и число, имя и возраст. Для этого не нужны два вызова: функция print принимает несколько значений через запятую и печатает их через пробел.

Python
print("Age:", 30)  # Age: 30
print("a", "b", "c")  # a b c

Значения в скобках называются аргументами функции. В первой строке примера их два:

  • "Age:" в кавычках — это строка, то есть текст;
  • 30 без кавычек — это число.

print печатает строку без кавычек, а число — цифрами. Перед печатью каждое значение превращается в текст, поэтому строки и числа можно смешивать в одном вызове. Пробел между Age: и 30 ставит сама print: в строке "Age:" его нет.

Кавычки

Строку можно записать в двойных или в одинарных кавычках: "Hi" и 'Hi' — одна и та же строка. В примерах курса кавычки двойные.

Кавычки работают как границы строки. Интерпретатор читает текст от открывающей кавычки до такой же закрывающей. Поэтому другой вид кавычек выручает, когда кавычка есть в самом тексте:

Python
print("It's late")  # It's late
print('Say "hi"')  # Say "hi"

Давайте разберём обе строки:

  1. В "It's late" апостроф стоит внутри двойных кавычек, поэтому строку он не завершает.
  2. В 'Say "hi"' двойные кавычки стоят внутри одинарных и печатаются как обычные символы.

Строка заканчивается только на такой же кавычке, с какой началась.

Аргументы sep и end

Запись sep="-" в скобках — именованный аргумент: имя, знак = и значение. Обычные аргументы print печатает, а именованные задают, как именно печатать. Здесь нам понадобятся два таких аргумента — sep и end.

Python
print("a", "b", "c", sep="-")  # a-b-c
print("one", end=" ")
print("two")  # one two
print()
print("end")  # end

Аргумент sep

Аргумент sep задаёт, что print ставит между значениями. По умолчанию это пробел, поэтому print("a", "b", "c") печатает a b c. В первой строке примера sep="-" заменил пробелы на дефисы, и получилось a-b-c.

Строка без символов "" называется пустой. В sep она склеивает значения без пробела: print("a", "b", sep="") напечатает ab.

Аргумент end

Аргумент end задаёт, что печатается в конце. По умолчанию это переход на новую строку. Представьте, что после каждого print машина прокручивает ленту, и следующий вызов начинает с новой строки.

Давайте разберём строки примера со второй по пятую:

  1. print("one", end=" ") печатает one и пробел, но ленту не прокручивает.
  2. print("two") продолжает ту же строку, и вместе получается one two.
  3. print() без аргументов только прокручивает ленту, то есть печатает пустую строку вывода.
  4. print("end") печатает end после этой пустой строки.

Порядок аргументов

Именованные аргументы пишут после обычных, через запятую, а между собой — в любом порядке. Например, print("a", "b", end=".", sep="") напечатает ab., как и тот же вызов с sep перед end.

Если поставить именованный аргумент перед обычным, программа не запустится. Интерпретатор сообщит ошибку SyntaxError: positional argument follows keyword argument.

Частая ошибка

Между аргументами пропущена запятая:

Python
print("Age:" 30)  # ✗
TEXT
SyntaxError: invalid syntax. Perhaps you forgot a comma?

Без запятой интерпретатор не может разделить два значения и останавливается на этой строке. Сообщение заканчивается подсказкой о пропущенной запятой. Исправление — поставить её: print("Age:", 30).

Главное

  • print печатает несколько аргументов через пробел: строки без кавычек, числа цифрами.
  • Строку пишут в двойных или одинарных кавычках, и она заканчивается на такой же кавычке, с какой началась.
  • sep задаёт, что стоит между значениями, а end — что печатается в конце.
  • Именованные аргументы пишут после обычных.

Подпишись, чтобы пройти курс

Курс бесплатный. Войди через Telegram и подпишись на канал — откроются все уроки.

Войти другим способом