Главная » Просмотр файлов » Марк Лутц - Изучаем Python, Четвертое издание

Марк Лутц - Изучаем Python, Четвертое издание (1184811), страница 91

Файл №1184811 Марк Лутц - Изучаем Python, Четвертое издание (Марк Лутц - Изучаем Python, Четвертое издание) 91 страницаМарк Лутц - Изучаем Python, Четвертое издание (1184811) страница 912020-08-21СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 91)

Инструкция print тесно связанас понятием файлов и потоков в языке Python.Методы объектов файловВ главе 9 мы рассматривали некоторые методы для работы с файлами, которые выводят текст (например, file.write(str)). Инструкция print чем-то похожа на них, но она имеет более специализированное назначение: инструкция print по умолчанию записывает объекты в поток stdout (с соблюдениемнекоторого форматирования), в то время как методы файлов записываютстроки в произвольные файлы. В отличие от методов файлов, инструкцияprint не требует преобразовывать объекты в строковое представление.Поток стандартного выводаПоток стандартного вывода в языке Python (известный под именем stdout) –это просто объект, куда программы выводят текст.

Наряду с потоками стандартного ввода и стандартного вывода сообщений об ошибках, поток стандартного вывода является одним из трех потоков, которые создаются в момент запуска сценария. Поток стандартного вывода обычно отображаетсяна окно терминала, где была запущена программа на языке Python, еслиявно не было выполнено перенаправление вывода в файл или в конвейер системной командной оболочки.Так как поток стандартного вывода в языке Python доступен в виде объектаstdout из встроенного модуля sys (то есть sys.stdout), вполне возможно имитировать поведение инструкции print с помощью методов записи в файл, хотя использование print выглядит проще.Операция вывода является одной из тех, в которых различия между Python 3.0и 2.6 оказались наиболее заметными.

Фактически различия в реализации этойоперации являются одной из основных причин, обусловливающих невозможность выполнения программ, написанных для версии 2.X, под управлениемверсии 3.X без внесения изменений в программный код. В частности, от версииинтерпретатора зависит способ оформления операции print:•• В Python 3.X инструкция print превратилась во встроенную функцию, которая принимает именованные аргументы, определяющие специальные режимы вывода.Операция print363•• В Python 2.X print – это инструкция, имеющая свой характерный синтаксис.Так как в этой книге рассматриваются обе версии интерпретатора, 3.0 и 2.6,мы рассмотрим особенности реализации print в каждой из них по отдельности.Если вам повезло настолько, что вы работаете с программами, написаннымидля какой-то одной версии ��������������������������������������������������Python��������������������������������������������, вы можете прочитать только тот раздел, который подходит для вашего случая.

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

Так как в версии 3.0print – это обычная функция, для обращения к ней используется не какая-тоспециальная форма, а стандартный синтаксис вызова функций. Вследствиеэтого специальные режимы работы определяются с помощью именованных аргументов. Такая форма не только более универсальна, но и обеспечивает лучшую поддержку будущих расширений.Для сравнения, инструкция print в версии Python������������������������������������������������������������ 2.6 имеет специализированный синтаксис поддержки таких особенностей, как подавление вывода символа конца строки и перенаправление вывода в файл. Кроме того, инструкцияprint в версии 2.6 вообще не позволяет определить строки-разделители – в версии 2.6 вам намного чаще придется конструировать строки заранее, чем в версии 3.0.Формат вызоваСинтаксис вызова функции print в версии 3.0 имеет следующий вид:print([object, ...][, sep=’ ‘][, end=’\n’][, file=sys.stdout])Здесь элементы в квадратных скобках являются необязательными и могутбыть опущены, а значения, следующие за знаком =, определяют значения поумолчанию.

Проще говоря, эта встроенная функция выводит в файл streamодин или более объектов в текстовом представлении, разделенных строкой sep,и завершает вывод строкой end.Параметры sep, end и file, если они необходимы, должны передаваться нев виде позиционных, а в виде именованных аргументов, то есть с использованием специального синтаксиса «имя=значение». Именованные аргументыпо­дробно рассматриваются в главе 18, но они достаточно просты в использовании. Именованные аргументы могут указываться в любом порядке в вызовефункции, но после объектов, предназначенных для вывода, и определяют параметры вывода:•• sep – строка, которая должна вставляться между объектами при выводе.По умолчанию состоит из одного пробела. Чтобы подавить вывод строкиразделителя, в этом аргументе следует передать пустую строку.364Глава 11.

Присваивание, выражения и print•• end – строка, добавляемая в конец выводимого текста. По умолчанию содержит символ конца строки \n. Если в этом аргументе передать пустую строку, следующий вызов функции print начнет вывод текста с позиции, где закончился вывод текущей строки.•• file – объект файла, стандартный поток или другой объект, похожий нафайл, куда будет выводиться текст. По умолчанию используется объектsys.stdout стандартного потока вывода. В этом аргументе можно передатьлюбой объект, поддерживающий метод файлов write(string); если передается настоящий объект файла, он должен уже быть открыт для записи.Текстовое представление любого объекта, который передается для вывода,функция print получает с помощью встроенной функции str.

Как мы уже знаем, эта функция возвращает «удобочитаемое» строковое представление любого объекта.1 При вызове без аргументов функция print просто выведет символконца строки в поток стандартного вывода, что выглядит, как вывод пустойстроки.Функция print в действииПользоваться функцией print в версии 3.0 намного проще, чем можно былобы предположить, после знакомства с некоторыми ее особенностями. Для����ил���люстрации выполним несколько коротких примеров.

Ниже демонстрируетсяпорядок вывода объектов различных типов в поток стандартного вывода, используемый по умолчанию, со строкой-разделителем по умолчанию и с добавлением символа конца строки (эти значения параметров вывода были выбраны значениями по умолчанию, потому что они используются в подавляющембольшинстве случаев):C:\misc> c:\python30\python>>>>>> print()# Выведет пустую строку>>> x = ‘spam’>>> y = 99>>> z = [‘eggs’]>>>>>> print(x, y, z)# Выведет три объектаspam 99 [‘eggs’]В данном примере нет никакой необходимости преобразовывать объектыв строки, как этого требуют методы записи в файлы.

По умолчанию функцияprint выводит символ пробела между объектами. Чтобы подавить вывод пробела, достаточно просто передать пустую строку в именованном аргументе sepили указать иную строку-разделитель:1С технической точки зрения, при выводе объектов внутри используется не самафункция str, а некоторая эквивалентная реализация, хотя конечный результат получается тем же самым. Имя str не только представляет функцию преобразованияв строку, но также является именем строкового типа данных и может использоваться для декодирования строк Юникода из строк байтов, принимая дополнительныйаргумент с названием кодировки, о чем подробно рассказывается в главе 36.

Эта последняя роль является дополнительной особенностью, которую здесь можно спокойно игнорировать.365Операция print>>> print(x, y, z, sep=’’)spam99[‘eggs’]>>>>>> print(x, y, z, sep=’, ‘)spam, 99, [‘eggs’]# Строка-разделитель выводиться не будет# Нестандартная строка-разделительКроме того, в конце выводимой строки функция print добавляет символ концастроки. Вывод�����������������������������������������������������������этого���������������������������������������������������������������������������������������������������������������символа�������������������������������������������������������������������������������������������������можно�����������������������������������������������������������������������������������подавить��������������������������������������������������������������������, передав�������������������������������������������������пустую����������������������������������строку��������������������в����������� ����именованном аргументе end.

Точно так же в этом аргументе можно передать инойразделитель строк (включая символ \n, чтобы вручную обеспечить переводстроки):>>> print(x, y, z, end=’’)# Подавление вывода символа конца строкиspam 99 [‘eggs’]>>>>>>>>> print(x, y, z, end=’’); print(x, y, z) # Вывод двух строк в одной строкеspam 99 [‘eggs’]spam 99 [‘eggs’]>>> print(x, y, z, end=’...\n’) # Нестандартный разделитель строкspam 99 [‘eggs’]...>>>Допускается одновременное использование именованных аргументов, определяющих разделители между объектами в строке и между строками, – они могут указываться в любом порядке, но только после объектов, которые требуется вывести:>>> print(x, y, z, sep=’...’, end=’!\n’)spam...99...[‘eggs’]!>>> print(x, y, z, end=’!\n’, sep=’...’)spam...99...[‘eggs’]!# Несколько именованных аргументов# Порядок не имеет значенияНиже демонстрируется порядок использования именованного аргумента file –с его помощью можно перенаправить вывод текста в файл, открытый для записи, или в другой объект, совместимый с операцией вывода (в действительности – это разновидность перенаправления потоков, о чем будет рассказыватьсяниже в этом разделе):>>> print(x, y, z, sep=’...’, file=open(‘data.txt’, ‘w’)) # Вывод в файл>>> print(x, y, z)# Вывод в поток stdoutspam 99 [‘eggs’]>>> print(open(‘data.txt’).read()) # Вывод содержимого текстового файлаspam...99...[‘eggs’]Наконец, имейте в виду, что возможность определить строку-разделитель объектов в строке и разделитель строк, предоставляемая функцией print, – этовсего лишь подручное средство.

Характеристики

Тип файла
PDF-файл
Размер
12,21 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6274
Авторов
на СтудИзбе
316
Средний доход
с одного платного файла
Обучение Подробнее