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

Лутц М. - Изучаем Python (1077325), страница 67

Файл №1077325 Лутц М. - Изучаем Python (Лутц М. - Изучаем Python) 67 страницаЛутц М. - Изучаем Python (1077325) страница 672018-01-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Чтобы подавить вывод пробела между элементами, не следует производить вывод таким способом— вместо этого нужно самостоятельно собрать строку с помощью средств конкатенации и форматирования, о которых рассказывалось в главе 7, и вывести эту строку: Программа «НеПо ЧЧогЫ» на языке РуФоп Чтобы вывести сообщение «йе!1о и огЫ», достаточно просто напечатать строку: № Вивести строковии обьвкт »> рг1пт 'Ье11о иог1О' Пе11о иог1О Поскольку результаты выражений в интерактивной оболочке выво- дятся автоматически, вы можете даже не использовать инструкцию ршпг — просто введите выражение, которое требуется вывести, и ре- зультат его вычисления немедленно будет выведен: № Интерактивная оболочка виводит автоиатически »> 'Ье11о иог1О' 'Ье11о иог1О' В действительности инструкция рг)пг — это всего лишь эргономичная особенность языка Ру$)гоп — она обеспечивает простой интерфейс к объекту вуз.вгбоог, добавляя незначительный объем форматирования.

Фактически, если вам нравится идти более трудным путем, вы можете запрограммировать вывод таким способом: »> 1врогт вув № Вывод более слоимми способом »> вув.втбоот.иг11ег Ье))о иог)О',и') Пе11а иог1О В этом фрагменте явно вызывается метод нгтге объекта вув. вгбсог — атрибут, предустановленный интерпретатором Ру$)гоп во время открытия файла, связанного с потоком вывода. Инструкция рг)пт скрывает большую часть этих подробностей, предоставляя простой инструмент для решения простых задач вывода.

Перенаправление потока вывода Итак, почему я показал пока единственный способ вывода7 Как оказывается, объект вув. вгбоог обеспечивает возможность вывода, эквивалентную базовой методике, используемой в языке РуЬйоп. Вообще говоря, инструкция ргтпг и объект вув.вГбсог связаны между собой следующим образом. Следующая инструкция: рг!пт Х »> рг1п1 х + у аЬ »> рггпт 'ьв...вв' 1 (», у) а .Ь Глава11.

Присааиэание, выражения и рпп1 309 Инструкция рпп1 является эквивалентом более длинной: 1ВРОГ1 ауа ауа.атоаотпигтте(втг(х) г 'Хп') которая вручную выполняет преобразование объекта в строку с помощью функции з1г, добавляет символ новой строки с помощью оператора + и вызывает метод нгтте потока вывода. Более длинная форма сама по себе не так удобна в использовании. Однако полезно знать, что она является точным эквивалентом инструкции рып1, потому что существует возможность перенаправить зуз. ассоц( в место, отличное от стандартного потока вывода. Другими словами, эта эквивалентность обеспечивает возможность заставить инструкцию ргтп1 выводить текст в другое место.

Например: !эраст ауа ауа.атоовт = преп('1од тхт', 'а') л лвреиаправита вывод в еайл Д Текст появится в Файле )од Гхт ргтпт х, у, х Здесь мы вручную перенаправили объект зуз. этсоо1 в файл, открытый вручную в режиме добавления. После этого все инструкции ргтп1 в программе будут выводить текст в конец файла 1оудх(, а не в стандартный поток вывода. Инструкции рг(п1 благополучно продолжают вызывать метод иг11е объекта эуз. зтооот независимо от того, куда он ссылается. Поскольку в каждом процессе существует всего один модуль зуз, перенаправление зуз. зтсоо1 таким способом будет воздействовать на все инструкции ргтп1 в программе. Фактически, как будет говориться в ближайшей врезке, описывающей инструкцию ргтп1 и объект з(соо1, существует возможность пере- направить зуа. атоса в объект, который даже не является файлом, при условии, что он соответствует ожидаемому протоколу (метод игтте),— в этом случае объект может быть классом, который может обрабатывать и перенаправлять выводимый текст произвольным образом.

Этот прием с перенаправлением потока вывода в первую очередь может оказаться полезен в программах, изначально рассчитанных на использование инструкции рг(п1. Если известно, что весь вывод должен отправляться в файл, вы всегда сможете организовать вызов методов записи в файл.

При перенаправлении потока вывода в программах, основанных на использовании инструкции ргтп1, настройка объекта зуа.з1((оо1 обеспечивает удобную альтернативу изменению поведения всех инструкций рг1п1 или применению перенаправления средствами командной оболочки системы. Расширение рипа» Ие Прием перенаправления вывода текста за счет назначения файла в объекте ауз. асооо1 очень часто используется на практике.

Однако в программном коде предыдущего раздела имеется одна потенциальная проблема — отсутствует прямой способ восстановления первоначального потока вывода, если вдруг после вывода данных в файл потребуется вернуться обратно к выводу на экран. Но поскольку зуз. зтбоо1 является обычным объектом, вы всегда можете в случае необходимости сохранить его и восстановить позднее № Вытолкнуть буферы на диск № Восстановить первоначальный поток »> рг1п1 'Ьасв Пете' Ьвсх Пете »> рг1пт орел(' 1оц. Ьхт'). гвас() зрвв 1 2 3 № Вывести нв экран № Результаты более ранних сбравений № к инструкции рг№пг Потребность в таком перенаправлении возникает на удивление часто, а ручное сохранение и восстановление оригинального потока вывода— процедура достаточно сложная, что привело к появлению расширения для инструкции рг(л1, которое делает такое перенаправление ненужным.

Когда инструкция рг(п1 начинается с символов», вслед эа которыми указывается объект файла (или другой объект) для вывода, такая инструкция посылает текст методу нг!1е указанного объекта, но при этом не происходит перенаправления объекта зуз. з(боо1. Поскольку в этом случае перенаправление носит временный характер, обычные инструкции рг!п1 продолжают выводить текст в оригинальный поток вывода: 1оц = орел('1оц.тхг', 'а') рг1пт » 1оц, х, у, г рг1пт а, Ь, с № Вывести в обьект, нзпоиинаавий файл № Вывести в оригинальный поток вывода Расширение » удобно использовать, когда в одной и той же программе необходимо организовать вывод и в файл, и в стандартный поток вывода. Однако, если вы собираетесь использовать эту форму инструкции, вам потребуется создать объект-файл (или объект, который имеет метод нг11е, как и объект файла) и передавать инструкции этот объект, а не строку с именем файла: Можно также использовать относительно новый атрибут зтоос1 объекта зуз, з1соит, который ссылается на первоначальное значение зув, зшос1, имевшееся на момент запуска программы.

Но вам и в этом случае необходимо вручную восстановить зуз. згбос1 в первоначальное значение зтбоот, чтобы вернуться к оригинальному потоку вывода. За дополнительными подробностями обращайтесь к описанию модуля зув в руководстве по стандартной библиотеке. »> 1врог1 вув »> тавр = вуз.в1СОЬ1 »> вув,втбОот = ОРеп('1ОЦ.тхт', »> ргьп1 'враз' »> рг1п1 1, 2, 3 »> вув.в1бост.с1ове() »> вув.всбоет = тезр Глвва11.

Г)рисззивание, выражения и рггл1 № Сохранить длл последующего восстановлении 'а') № Леренвпрзвить вывод в Файл № Вывести е файл, а не нв экран Инструкция рпп1 »> 1ор = орел('1ор.вх1', 'и') »> Рг1пс » 1оо, 1, 2, 3 »> рг1пв » 1оо, 4, 5, 8 »> 1оо.с1ове() »> рг1пс т, 8, 9 7 8 9 »> рг1пт орел('1ор.вхв'), гваб() 1 2 3 4 5 В Эта расширенная форма инструкции рг!пг нередко используется для вывода сообщений об ошибках в стандартный поток ошибок, вув. в(бегг.

Вы можете либо использовать его метод иг!(е и форматировать выводимые строки вручную, либо использовать синтаксис перенаправления: »> 1арогт вув »> вув.втбегг.иг11а(('Ваб!' * 8) + ''1п') Ваб.'Ваб,'Ваб'Ваб!Ваб'Ваб.'Ваб.'Ваб,' »> рг1пс » вув.втбегг, 'Ваб!' * 8 Ваб' Ваб! Ваб' Ваб' Ваб' Ваб' Ваб! Ваб.' Придется держать в уме: рипа и ВИои1 Эквивалентность инструкции р ы пс и метода и г !(е объекта вув.вшош имеет большое значение.

Она позволяет перенаправить объект вув.в(боы( в определяемый пользователем объект, который поддерживает те же методы, что и файлы (например, иг!1е). Так как инструкция рг(пг всего лишь передает текст методу вув. в!боб(. иг!(е, вы можете перехватывать выводимый текст, перенаправив вув. в(боы( в объект, обладающий методом иг11е для обработки текста. Например, можно отправить текст в окно графического интерфейса или отправить его в несколько мест, определив объект с методом иг!(е, который выполнит все необходимые действия. Пример использования такой возможности вы увидите далее в книге, когда мы будем изучать классы, но в общих чертах это выглядит примерно так: с1авв Е(1еЕаКег; бег иг!1е(ве!г, вгггпр): В Выполнить какие-либо действия со строкой 1арог1 вув вув.в1боы1 = Е11еЕаКвг() рг1пт воаебб)ес1в д Передает строку методу мгбге класса З1г Глава 11 Присваивание, выражения и рпп1 Этот прием возможен благодаря тому, что инструкция рг)пг является тем, что в следующей части книги мы назовем полиморфной операцией, — она не интересуется тем, что из себя представляет объект зув, зЬЬЬЬЬ, ей нужен всего лишь метод (т.

е. интерфейс) с именем нг)ге. В последних версиях РуФЬоп перенаправление в объекты реализовано еще проще, с помощью расширенной формы» инструкции рг1п1, благодаря чему нам не требуется явно перенаправлять объект вуз. зтбоо)К ауоЬ) = Р11вРаквг() В Перенаправление вывода для одной инструкции рыпт » ауоь), эоаеОь)вств в нв влияет нв объект вув.вгооот Встроенная функция гав 1при11) в языке Руь)гоп читает данные из файла вув. в1зш, поэтому существует возможность перенаправить ввод аналогичным образом, используя классы, реализующие метод геас. Смотрите примеры использования функции ган >прот и цикла нл>1е, которые приводятся в главе 10, чтобы получить дополнительные начальные сведения по этой теме.

Обратите внимание: вывод текста осуществляется в поток вгзоог, что обеспечивает возможность вывода документов НТМЕ в С01- сценариях. Кроме того, это позволяет выполнить перенаправление ввода и вывода для сценария на языке РуЫ>оп обычными средствами командной строки операционной системы: рутпоп всгтрт.ру < топоту>!е > оо1ро1Г>1е ьутпоп всггст.оу 1 г>1твгпгосгаа о б«Предполагается, что в РуЫ>оп 3.0 инструкция рг1пт превратится во встроенную функцию с эквивалентными возможностями, ио с несколько иным синтаксисом.

Выходной файл и необходимость вывода символа конца строки будут определяться аргументами с зарезервированными именами. Например, инструкция рггпт х, у превратится в вызов пгтпцх, у), а инструкция рг1пг » г, х— в вызов Пг1пцх, Г>1в=Г, впс=' Но все это будет в будущем, поэтому за дополнительной информацией обращайтесь к примечаниям к выпуску 3.0. В настоящее время предложено включить в версию 3.0 сценарий Гс рабочим названием «2ЬЬЗ»), который кроме всего прочего будет выполнять преобразование инструкций ргтпт в существующем программном коде в вызовы функции рг1пп Ов должен помочь зам в переходе с версии 2.х иа версию З.х (как и эта книга!).

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

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

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

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