Функция Print() в Python

Функция print считается главным инструментом обучения программированию. Именно на ее примере демонстрируется вывод данных в Python. Многие ошибочно считают, что в этой, казалось бы, простой на первый взгляд функции, нет ничего такого, что можно было бы раскрывать детальнее. Но на деле это не так. После того, как пользователь переходит к более сложным темам, об этой функции очень часто вообще забывает. Тем не менее, нужно раскрыть основные аспекты работы с ней. Мы разберемся, как выводить фразу Hello, World, а также разберем ряд других важных вопросов.

Работа с функцией Print

Итак, для вывода фразы Hello, World! нужно ввести такую строку. 

print("Hello, World!")


Hello, World!

Во второй версии Python можно отказаться от использования скобок. А вот в третьей они нужны. Если не применять их, появляется исключение SyntaxError

  File "<ipython-input-6-a1fcabcd869c>", line 1

    print "Hello, World!"

                        ^

SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Hello, World!")?

Из этого вывода можно сделать умозаключение, что в 3-й версии Python print() – это функция, в то время как во второй – инструкция. Чтобы удостовериться в этом, необходимо проверить type/class функции print().  

type(print)



builtin_function_or_method

Этот вывод означает, что это встроенная функция Python (либо же ранее определенная). Допустим, необходимо добавить перенос строки/вертикальный отступ, для чего применяется функция print() без аргументов. 

print("Hello, World!");print("Hello, World!")




Hello, World!

Hello, World!




print("Hello, World!")

print()

print("Hello, World!")




Hello, World!




Hello, World!

Мы привели два фрагмента кода для сравнения. В первом случае выводится последовательно две строки, без отступа. Во втором – с ним.

На первый взгляд кажется, что функция print() не содержит никаких аргументов, кроме текстовой строки. Но нет, просто есть ряд необязательных. 

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

Насколько вы знаете, эта функция выводит значения в поток данных или в sys.stdout по умолчанию. sys.stdout или стандартный вывод системы говорят о том, что функция print выводит значение на экран. Его можно заменить на stdin или stderr.

Необязательные аргументы

sep

Это разделитель между значениями, который может вставляться между значениями. Давайте вставим список слов в print, а потом сделаем в качестве разделителя знак новой строки. Повторим: стандартный разделитель – это пробел. Если не указывать эту функцию, то между словами именно он и добавится. 

print('туториал', 'по', 'функции', 'print()')

туториал по функции print()



# \n перенесет каждое слово на новую строку

print('туториал', 'по', 'функции', 'print()', sep='\n') 



туториал 

по 

функции 

print()

Кроме этого, можно осуществить разделение слов с использованием запятых или добавить два знака новой строки \n, следствием чего будет появление пустой строки между текстовыми строками. Или же, знак + можно применить в качестве разделителя. 

print('туториал', 'по', 'функции', 'print()', sep=',')

туториал,по,функции,print()

print('туториал', 'по', 'функции', 'print()', sep='\n\n')

туториал 




по 




функции 




print()

print('туториал', 'по', 'функции', 'print()', sep=',+')

туториал,+по,+функции,+print()

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

end

Это текст, который добавляется после последнего значения. Значение по умолчанию – перенос на новую строку \n. Это означает, что если будет вторая функция print, она выведет строку с новой строки, если не будет задано иного. И вот с использованием аргумента end это «иное» можно задать. 

Допустим, есть две строки, а создателю приложения нужно объединить их, оставив между ними пробел. Тогда надо в первой функции print записать первую строку, str1 и аргумент end с кавычками. Тогда на экране будет две строки с пробелом между ними. 

str1 = 'туториал по'

str2 = 'функции print()'

print(str1)

print(str2)




туториал по

функции print()




print(str1, end=' ')

print(str2)




туториал по функции print()

А теперь давайте приведем другой пример, в котором есть функция, которая выводит значения списка на одной строке. Чтобы это сделать, необходимо воспользоваться следующим значением аргумента end

def value(items):

    for item in items:

        print(item, end=' ')





value([1,2,3,4])




1 2 3 4

file

Здесь содержится файлоподобный объект. По умолчанию таковым является sys.stdout. Здесь можно указать файл, в который должна осуществляться запись данных или же их добавление из функции.

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

Давайте рассмотрим это на примере с перебором всех элементов списка. Он сохраняется в файле текстового формата. В первую очередь открытие этого документа должно осуществляться в формате append. Затем мы определяем функцию, чей вывод будет добавляться внутрь. 

file = open('print.txt','a+')





def value(items):

    for item in items:

        print(item, file=file)

    file.close()  # закройте файл после работы с ним.




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

По окончании исполнения программы, в текущей папке появится файл с названием print.txt.

Теперь мы видим, что эта функция не всегда используется для вывода текста на экран. Более того, когда будут создаваться графические интерфейсы, то будут использоваться совсем другие инструменты. А вот запись логов приложения в текстовый файл – это очень удобный вариант использования этой функции, который будет полезен всегда по ходу исполнения программы.

flush

Этот аргумент определяет, необходима ли принудительная очистка потока. Значение по умолчанию – False. Обычно вывод в файл либо в консоль буферизируется, пока не напишется знак новой строки. Как это интерпретировать? То, что вывод хранится в специальном регистре, пока документ не будет готовым к сохранению значения либо не окажется закрытым. И с использованием аргумента flush разработчик может убедиться, что буферизированный вывод благополучно добрался до точки назначения. 

import time




print('Пожалуйста, введите ваш электронный адрес : ', end=' ')

# print('Пожалуйста, введите ваш электронный адрес : ', end=' ', flush=True)  

# запустите код выше, чтобы увидеть разницу.

time.sleep(5)




Пожалуйста, введите ваш электронный адрес :

Что будет, если запустить этот код? Вы обнаружите, что строка с запросом на вход не будет появляться до того момента, пока не будет закрыта программа после окончания таймера. А вот если добавить аргумент flush=True, то строка отобразится сразу, но чтобы программа закрылась, придется подождать 5 секунд.

Правда, лучше работать с этой функцией в командной строке, а не в Jupyter Notebook, поскольку последний все равно показывает текст перед 5-секундным таймером. Поэтому чтобы проверить эту особенность, рекомендуется все же пользоваться консолью.

А теперь давайте посмотрим, каким образом используется функция print для получения ввода от пользователя Jupyter Notebook. Чтобы это сделать, мы применим встроенную функцию input()

tutorial_topic = input()

print("Тема сегодняшнего урока: ", end='')

print(tutorial_topic)



функция print()



Тема сегодняшнего урока: функция print()

Обратите внимание: здесь используется дополнительный аргумент end, объединяющий статическую инструкцию в print и ввод пользователя.

Давайте теперь рассмотрим другие любопытные методы ввода значений переменных в функции print.

1. Чтобы значение отображалось вместе с определенной строкой, необходимо между ними добавить запятые. В таком случае положение строки и переменной значения не имеет. 

a = 2

b = "PythonRU"

print(a,"— целое число, а",b,"— строка.")




2 — целое число, а PythonRU — строка.

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

Давайте эту особенность продемонстрируем на примере. 

a = 2

b = "PythonRU"

print("{0} — целое число, а {1} — строка.".format(a,b))

Если мы поставим тот же самый номер индекса во всех местах, то одни и те же значения будут отображаться в выводе на этих местах. 

a = 2

b = "PythonRU"

print("{1} — целое число, а {1} — строка.".format(a,b))



PythonRU — целое число, а PythonRU — строка.

3. Вместо аргумента format многие разработчики также используют символ процента %, чтобы выводить значения переменных.

Этот метод также основывается на принципе заполнителей. Правда, здесь нет необходимости указывать номера индексов, а лишь обозначить тип данных, которые получит функция.
%d — это заполнитель для числовых или десятичных значений.

%s — заполнитель для строк.

Вывод

Мы разобрались в основных аспектах того, что нужно знать для работы с функцией print() в Python. Как видим, ничего сложного в этом нет. Если вы новичок и хотите добиться высокого уровня профессионализма, использование приведенных здесь рекомендаций вам здорово поможет. Попробуйте потренироваться использовать эту функцию для разных задач. Без практики хорошего обучения не выйдет.

ОфисГуру
Adblock
detector