Python что делает команда print

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

На примерах узнайте, какие возможности предлагает функция print в Python.

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

Это руководство целиком посвящено функции print в Python — из него вы узнаете о том, насколько она недооценена.

Если в Python 2 скобки можно не использовать, то в Python3 они обязательны. Если их не указать, то будет вызвана синтаксическая ошибка.

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

Из текста выше можно сделать вывод, что в Python 3 print() — это не инструкция, а функция.

Чтобы убедиться, проверим type/class функции print() .

builtin_function_or_method 

Возвращается builtin_function_or_method . Это значит, что это ранее определенная или встроенная функция Python.

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

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

Рассмотрим синтаксис функции print() .

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

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

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

  • sep — это может быть строка, которую необходимо вставлять между значениями, по умолчанию — пробел. Вставим список слов в print и разделим их с помощью символа новой строки. Еще раз: по умолчанию разделитель добавляет пробел между каждым словом.
print('туториал', 'по', 'функции', 'print()') 
туториал по функции print() 
# \n перенесет каждое слово на новую строку print('туториал', 'по', 'функции', 'print()', sep='\n') 
туториал по функции print() 

Также можно разделить слова запятыми или добавить два символа новой строки ( \n ), что приведет к появлению пустой строки между каждой строкой с текстом или, например, знак плюс ( + ).

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

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

int_list = [1,2,3,4,5,6] print(int_list) 

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

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

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

def value(items): for item in items: print(item, end=' ') value([1,2,3,4]) 
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]) 
import time print('Пожалуйста, введите ваш электронный адрес : ', end=' ') # print('Пожалуйста, введите ваш электронный адрес : ', end=' ', flush=True) # запустите код выше, чтобы увидеть разницу. time.sleep(5) 
Пожалуйста, введите ваш электронный адрес : 

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

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

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

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

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

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

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

a = 2 b = "PythonRU" print(" — целое число, а — строка.".format(a,b)) 
PythonRU — целое число, а PythonRU — строка. 
a = 2 b = "PythonRU" print("%d — целое число, а %s — строка."%(a,b)) 
2 — целое число, а PythonRU — строка. 

Посмотрим, что произойдет, если указать %s для переменной a , которая является целым числом.

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

Как видно, все работает. Причина в том, что функция print неявно выполняет typecasting и конвертирует целое число в строку. Но в обратном порядке это работать не будет. Функция не сможет конвертировать строку в целое число, а вместо этого выведется TypeError .

print("%d — целое число, а %d — строка."%(a,b)) 
 --------------------------------------------------------------------------- TypeError Traceback (most recent call last) in ----> 1 print("%d — целое число, а %d — строка."%(a,b)) TypeError: %d format: a number is required, not str 

Вывод

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

Источник

Как работает функция print в Python

Обложка: Как работает функция print в Python

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

Вы наверняка знакомы с этой функцией. С неё начинается любой урок по программированию на Python.

В данном случае функция выведет в консоль сообщение:

При этом обязательно использовать скобки, иначе возникнет синтаксическая ошибка. В Python 2 скобки можно было не указывать, но в Python 3 скобки необходимы. Всё потому, что в третьей версии print() — это функция, а не инструкция.

Убедимся, что перед нами действительно функция, и спросим Python:

Python ответит нам, что перед нами встроенная функция или метод.

builtin_function_or_method 

Аргументы print() в Python

Аргументы функции print() позволяют изменять способ форматирования сообщений и управлять стилем вывода.

Вот полный синтаксис функции, скрытый от наших глаз:

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

Аргументы функции здесь — это sep , end , file и flush :

  1. sep позволяет задать разделитель, который будет выводиться между элементами, переданными в функцию print(). По умолчанию разделителем является пробел, но с помощью sep пробел можно заменить на другой разделитель, к примеру, на запятую.
  2. end позволяет определять символ, который будет добавлен в конец сообщения после вывода. По умолчанию это символ перевода строки. Поменять его можно, к примеру, на точку с запятой.
  3. file позволяет перенаправить вывод текста в нужный вам файл. По умолчанию функция выводит текст в консоль, в которой вы и задаёте команды Python. Аргумент file полезен, если нужно сохранить вывод для дальнейшего использования.
  4. flush позволяет управлять буферизацией вывода. Если этот аргумент установлен в True, то вывод не будет буферизоваться и будет выводиться немедленно.

Рассмотрим эти аргументы чуть подробнее.

Аргумент sep в функции print() на Python

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

Попросим Python вывести на экран слова, не меняя при этом sep .

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

Убеждаемся, что sep по умолчанию — это пробел. На экране появится такое сообщение:

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

Теперь попробуем заменить дефолтный пробел в sep на что-то другое. Используем символы \n в качестве разделителя в аргументе sep . Они должны перенести каждый следующий элемент выдачи на новую строку.

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

Получается вот такой вывод функции:

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

Как и ожидалось, после каждого слова в выводе строка переносится, ведь разделителем мы назначили именно перенос строки. 🙂

Аргумент end в функции print() на Python

Аргумент end — это суть то же самое, что и sep . Разница только в том, что sep — это разделитесь между элементами вывода, а end — это разделитесь самих выводов разных функций print() , если их несколько.

По умолчанию end — это перенос строки. Его тоже можно заменить на любое другое удобное значение.

Вот, как выглядит стандартный вывод функций print() , если не менять аргумент end .

print('Брюки - это') print('одежда, которая надевается на нижнюю часть тела.') 
Брюки - это одежда, которая надевается на нижнюю часть тела. 

Попробуем заменить перенос строки в аргументе end на обычный пробел.

print('Брюки - это', end=' ') print('одежда, которая надевается на нижнюю часть тела.') 

Вывод с обычным пробелом вместо переноса строки:

Брюки - это одежда, которая надевается на нижнюю часть тела. 

Аргумент file в функции print() на Python

Аргумент file позволяет записывать данные вывода в файлы с расширением txt или csv.

По умолчанию значение аргумента file указано как sys.stdout . Это — вывод значений непосредственно в консоль Python.

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

file = open('print.txt','a+') #открываем файл def value(items): for item in items: print(item, file=file) #вызываем функцию print, вывод которой должен записаться в файл file.close() # закрываем файл value([1,2,3,4,5,6,7,8,9,10]) 

Результатом выполнения этого кода станет появление файла print.txt. Внутри него должно оказаться:

Аргумент flush в функции print() на Python

Аргумент flush в функции print() в Python позволяет управлять выводом сообщений без задержек.

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

По умолчанию аргумент flush установлен в значении False .

Когда значение аргумента flush установлено в True , Python выводит сообщение, не дожидаясь буферизации вывода. Это полезно, когда нужно мгновенно показать вывод в консоли или в файле.

with open('output.txt', 'w') as f: print('Hello, world!', file=f, flush=True) 

В этом примере мы записали вывод Hello, world! в файл output.txt без буферизации, установив значение аргумента flush как True .

Однако с этим аргументом нужно быть осторожным:

  1. Если возникнет ошибка в выполнении программы, а аргумент flush установлен как True, результат вывода может быть утерян. Он не сохранится в буфере из-за значения True и не отобразится в консоли или в файле из-за ошибки.
  2. Использование flush=True при работе с несколькими потоками может привести к тому, что разные потоки будут пытаться выводить данные в поток вывода одновременно. Это приведет к ошибкам.

Использование flush=True без должной осторожности может создать проблемы в работе программы и усложнить отладку. Если нет необходимости в ручной записи данных в поток вывода, лучше не использовать этот параметр.

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

Источник

Читайте также:  Block and inline elements in css
Оцените статью