Print() в Python. Синтаксис, ошибки, аргументы end и sep

Print() – наверное, самая первая команда, с которой сталкивается новичок при изучении Python с нуля. Почти все начинают с вывода на экран простого приветствия и переходят к дальнейшему изучению синтаксиса, функций и методов языка, не задумываясь о дополнительных возможностях print(). Однако в Python 3 эта команда предоставляет доступ к базовой функции вывода данных с присущими ей параметрами и возможностями. Знание этих особенностей позволит оптимизировать вывод данных для каждого конкретного случая.

Преимущества функции print() в Python 3

В третьей версии Python print() входит в базовый набор функций. При выполнении проверки type(print) выводится информация: classbuiltin_function_or_method. Слово builtin указывает на то, что проверяемая функция встроенная.

В Python 3 выводимые объекты (objects) помещают в скобках после слова print. На примере вывода традиционного приветствия это будет выглядеть так:

Для Python 3: print(‘Hello, World!’).

В Python 2 оператор применяется без скобок: printHello, World!’

Результат в обеих версиях будет одинаковый: Hello, World!

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

print(1, ‘first’, 2, ‘second’)

(1, ‘ first’, 2, ‘ second ‘)

При попытке убрать скобки после print в третьей версии Python, программа выдаст синтаксическую ошибку.

print("Hello, World!")
File "<ipython-input-6-a1fcabcd869c>", line 1
    print "Hello, World!"
                        ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Hello, World!")?

 Особенности синтаксиса print() в Python 3

Синтаксис функции print() включает собственно объект или объекты (objects), которые также могут называться значениями (values) или элементами (items), и несколько параметров. То, как именно будут выводиться объекты, определяется четырьмя именованными аргументами: разделителем элементов (sep), строкой, выводимой после всех объектов (end), файлом, куда выводятся данные (file), и параметром, отвечающим за буферизацию вывода (flush).

print(value, ..., sep='', end='\n', file=sys.stdout, flush=False)

Вызов функции возможен без указания значений параметров и даже без каких-либо объектов: print(). В этом случае задействованы параметры по умолчанию, и при отсутствии элементов выведется неотображаемый символ пустой строки – фактически, значение параметра end ‘\n. Такой вызов, к примеру, можно использовать для вертикального отступа между выводами.

В поток данных записываются все аргументы (объекты), не относящиеся к ключевым словам, преобразованные в строки, разделенные sep и завершаемые end. Аргументы параметров sep и end также имеют строковый тип, они могут не указываться при использовании дефолтных значений.

Параметр sep

Значения всех параметров print описываются в виде аргументов ключевых слов sep, end, file, flush. Если параметр sep не указывается, то применяется его дефолтное значение: sep=’ ‘, и выводимые объекты разделяются пробелами. Пример:

print(1, 2, 3)

1 2 3

В качестве аргумента sep можно указать другое значение, например:

  • разделитель отсутствует sep=»;
  • вывод с новой строки sep=\n’;
  • или любую строку:

print(1, 2, 3, sep=’слово-разделитель’)

1слово-разделитель2слово-разделитель3

Параметр end

По умолчанию end=’\n’, и вывод объектов завершается переходом на новую строку. Замена дефолтного значения другим аргументом, например, end, приведет к изменению формата выводимых данных:

print(‘one_’, end=»)

print(‘two_’, end=»)

print(‘three’)

one_two_three

Параметр file

Функционал print() поддерживает перенаправление вывода с помощью параметра file, который по умолчанию ссылается на sys.stdout – стандартный вывод. Значение может быть изменено на sys.stdin или sys.stderr. Файловый объект stdin применяется для входных данных, а stderr для отправки подсказок интерпретатора и сообщений об ошибках. С помощью параметра file можно задать вывод в файл. Это могут быть файлы формата .csv или .txt. Возможный вариант записи строки в файл:

fileitem = open(‘printfile.txt’,’a’)

def test(objects):

for element in objects:

print(element, file=fileitem)

fileitem.close()

test([10,9,8,7,6,5,4,3,2,1])

На выходе элементы списка будут записаны в printfile.txt по одному в строке.

Параметр flush

Этот параметр имеет отношение к буферизации потока данных и, поскольку он является логическим, может принимать два значения – True и False. По умолчанию параметр отключен: flush=False. Это означает, что сохранение данных из внутреннего буфера в файл будет происходить только после закрытия файла или после непосредственного вызова flush(). Для сохранения после каждого вызова print() параметру требуется присвоить значение True:

file_flush = open(r’file_flush.txt’, ‘a’)

print(«Запись строки в файл«, file=file_flush, flush=True)

print(«Запись второй строки в файл«, file=file_flush, flush=True)

file_flush.close()

Еще один пример использования параметра flush с помощью модуля time:

Print() в Python. Синтаксис, ошибки, аргументы end и sep

В этом случае аргумент True параметра flush позволит выводить числа по одному в три секунды, в то время как по умолчанию все числа были бы выведены на экран по истечении 15 секунд. Чтобы наглядно увидеть действие параметра flush, лучше запустить скрипт в консоли. Дело в том, что при использовании некоторых веб-оболочек, в частности, Jupyter Notebook, программа реализуется иначе (без учета параметра flush).

Вывод значений переменных с помощью print()

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

a = 0

b = ‘Python from scratch’

print(a,’– число, а‘,b,’– строка.’)

0 – число, а Python from scratch – строка.

Еще один инструмент для передачи значений переменных на вывод – метод format. Print при этом выступает в качестве шаблона, в котором вместо имен переменных в фигурных скобках указываются индексы позиционных аргументов:

a = 0

b = ‘Python from scratch’

print(‘{0} является числом, а {1} – строкой.’.format(a,b))

0 является числом, а Python from scratch – строкой.

Вместо format может быть использован символ %, который работает по тому же принципу заполнителей (в предыдущем примере роль заполнителей выполняли фигурные скобки). В этом случае номера индексов заменяются типом данных, получаемым функцией:

  • заполнитель %d применяют для числовых данных;
  • заполнитель %s – для строк.

a = 0

b = ‘Python from scratch’

print(‘%d является числом, а %s – строкой.’%(a,b))

0 является числом, а Python from scratch – строкой.

Если вместо заполнителя для целых чисел %d указать %s, функция print преобразует число в строку, и код сработает правильно. Но при замене %s на %d будет выведено сообщение об ошибке, поскольку обратная конвертация не осуществляется.

Print() в Python. Синтаксис, ошибки, аргументы end и sep

Заключение

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

ОфисГуру
Adblock
detector