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

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

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

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

Присваивание, выражения и printИдея состоит в том, чтобы дать пользователям достаточное время, чтобыобратить внимание на предупреждения и внести изменения в программыперед переходом на использование новой версии интерпретатора. Это неотносится к случаям, когда выходит новая версия со следующим основным номером, такая как 3.0 (в таких случаях обратная совместимостьс существующими программами не гарантируется без всяких предупреждений), но это справедливо для всех остальных случаев.Например, слово yield было необязательным расширением в версииPython 2.2, но, начиная с версии 2.3, оно стало стандартным зарезервированным словом.

Оно используется совместно с функциямигенераторами. Это один из небольшого числа элементов языка, в котором была нарушена обратная совместимость с прежними версиями. Приэтом отношение к использованию слова yield менялось поэтапно – в версии 2.2 при его использовании генерировалось предупреждение, и онобыло недопустимым до версии 2.3.Похожим образом в Python 2.6 появились новые зарезервированныеслова with и as для использования в менеджерах контекстов (новая форма обработки исключений). В версии 2.5 эти слова не считаются зарезервированными, пока менеджер контекстов не будет включен вручнуюс помощью инструкции импортирования from__future__ (подробностиприводятся ниже в этой книге). При использовании в версии 2.5 словаwith и as вызывают появление предупреждений о грядущих изменениях – исключение составляет версия IDLE в Python 2.5, где эта особенность включается автоматически (то есть использование этих слов в качестве имен переменных в версии 2.5 будет вызывать ошибку, но тольков интерфейсе IDLE).Соглашения по именованиюПомимо указанных правил существует еще целый ряд соглашений – правил,которые не являются обязательными, но которым обычно следуют на практике.

Например, имена с двумя символами подчеркивания в начале и в конце(например, __name__) обычно имеют особый смысл для интерпретатора, поэтому вам следует избегать их использования для именования своих переменных.Ниже приводится список соглашений, которым было бы желательно следовать:•• Имена, начинающиеся с одного символа подчеркивания (_X), не импортируются инструкцией from module import * (описывается в главе 22).•• Имена, имеющие два символа подчеркивания в начале и в конце (__X__),являются системными именами, которые имеют особый смысл для интерпретатора.•• Имена, начинающиеся с двух символов подчеркивания и не оканчивающиеся двумя символами подчеркивания (__X), являются локальными («искаженными») для объемлющего класса (смотрите обсуждение псевдочастныхатрибутов в главе 30).•• Имя, состоящее из единственного символа подчеркивания (_), хранит результат последнего выражения при работе в интерактивной оболочке.359Инструкции присваиванияВ дополнение к этим соглашениям существует еще ряд других соглашений,которым обычно стремятся следовать программисты.

Например, далее в книге мы увидим, что имена классов обычно начинаются с заглавного символа,а имена модулей – со строчного. Что имя self, хотя и не являющееся зарезервированным, играет особую роль в классах. В главе 17 мы познакомимся с ещеодной крупной категорией имен, которые называются встроенными, то естьпредопределенными, но не зарезервированными (вследствие чего они допускают переопределение: инструкция open = 42 является вполне допустимой, но иногда вы можете пожалеть, что это так!).Имена не имеют типа, тип – это характеристика объектовПо большей части это лишь краткий обзор, но вы должны помнить, что крайне важно сохранить четкое понимание различий между именами и объектамив языке Python.

Как говорилось в главе 6, объекты имеют тип (например, целоечисло, список) и могут быть изменяемыми или нет. С другой стороны, имена(они же переменные) всегда являются всего лишь ссылками на объекты – онине имеют информации об изменяемости или о типе отдельно от типа объекта,на который они ссылаются в данный момент времени.Это вполне нормально, когда в разные моменты времени одно и то же имя связывается с объектами разных типов:>>> x = 0>>> x = “Hello”>>> x = [1, 2, 3]# Имя x связывается с целочисленным объектом# Теперь оно представляет строку# А теперь – списокВ последующих примерах вы увидите, что такая универсальная природа именможет рассматриваться как существенное преимущество при программировании на языке Python.1 В главе 17 вы узнаете, что имена находятся внутри области видимости, которая определяет, где эти имена могут использоваться, –место, где выполняется присваивание, определяет, где это имя будет видимо.Дополнительные предложения, касающиеся именования переменных, приводятся в предыдущем разделе «Соглашения поименованию», который, по сути, повторяет положения из полу­официального руководства по оформлению программного кодана языке Python, известного как PEP 8.

Это руководство доступно по адресу http://www.python.org/dev/peps/pep-0008. Его такжеможно отыскать в Сети, выполнив поиск по строке «PythonPEP 8». С технической точки зрения этот документ формализуетстандарты оформления исходных текстов, используемые в стандартной библиотеке языка Python.1Если вам приходилось пользоваться языком C++, возможно, вас заинтересует, чтов отличие от C++ в языке Python отсутствует объявление const. Некоторые объекты могут быть неизменяемыми, но имена всегда допускают выполнение операцииприсваивания.

Кроме того, в языке Python имеются средства сокрытия имен в классах и модулях, но они также не являются аналогами объявлений в языке C++ (есливам интересна тема сокрытия атрибутов, обращайтесь к обсуждению имен модулейвида _X в главе 24, имен классов вида __X в главе 30, а также к примерам декораторовклассов Private и Public в главе 38).360Глава 11.

Присваивание, выражения и printНесмотря на важность стандартов, хочется сделать несколькообычных предупреждений. Во-первых, документ PEP���������������������8 содержит множество тонкостей, встретиться с которыми вы, вероятно, еще не готовы. Честно говоря, этот документ более сложныйи субъективный, чем должен был бы быть, – некоторые из предложений не являются общепринятыми и не поддерживаютсяпрограммистами-практиками. Кроме того, некоторые из наиболее известных компаний, использующих язык Python, принялисобственные стандарты оформления программного кода.Тем не менее документ PEP 8 содержит действительно полезныесведения, и начинающим программистам совсем не лишним будет ознакомиться с ним – при условии, что рекомендации в нембудут восприниматься как рекомендации, а не как обязательноеруководство к действию.Инструкции выраженийВ языке Python выражения также могут использоваться в качестве инструкций (то есть в отдельной строке).

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

С технической точки зрения они такжеявляются инструкциями выражений и играют роль сокращенной версииинструкции print.В табл. 11.4 перечислены некоторые наиболее часто используемые в языкеPython формы инструкций выражений. При вызове функций и методов импередаются ноль или более объектов в виде аргументов (в действительности –выражений, результатом вычисления которых являются объекты) в круглыхскобках, следующих за именем функции или метода.Таблица 11.4. Наиболее часто используемые в языке Python инструкциивыраженийОперацияИнтерпретацияspam(eggs, ham)Вызов функцииspam.ham(eggs)Вызов метода361Инструкции выраженийОперацияИнтерпретацияspamВывод значения переменной в интерактивнойоболочке интерпретатораprint(a, b, c, sep=’’)Операция ввода в Python 3.0yield x ** 2Инструкция выражения yieldПоследние две строки в таблице представляют специальные случаи: как будет показано далее в этой главе, инструкция вывода в версии Python 3.0 былапреобразована в функцию, вызов которой обычно оформляется в виде отдельной строки, и операция yield в функциях-генераторах (рассматриваются в главе 20) также часто оформляется как инструкция.

В действительности оба случая являются всего лишь примерами инструкций выражений.Например, даже при том, что функция print вызывается в отдельной строке,как инструкция выражения, тем не менее она возвращает значение, как и любая другая функция (она возвращает значение None – оно возвращается всемифункциями, которые явно не возвращают какого-либо значимого значения):>>> x = print(‘spam’) # print – это выражение вызова функции в версии 3.0,spam>>> print(x)# но может использоваться, как инструкция выраженияNoneНесмотря на то, что выражения могут играть роль инструкций в языке Python,сами инструкции не могут использоваться в качестве выражений.

Например,язык Python не допускает встраивание инструкции присваивания (=) в выражения. Сделано это специально, чтобы помочь избежать ошибок, – вы моглибы случайно изменить переменную, введя вместо оператора проверки равенства == оператор присваивания =. В главе 13 будет показано, как отсутствие такой возможности может быть компенсировано в языке Python, когда мы будемобсуждать цикл while.Инструкции выраженийи непосредственное изменение объектовИнструкции выражений являются причиной распространенной ошибки припрограммировании на языке Python. Инструкции выражений часто используются для вызова методов списка, которые непосредственно изменяют самсписок:>>>>>>>>>[1,L = [1, 2]L.append(3)L2, 3]# Метод append изменяет сам списокОднако начинающие программисты нередко записывают такие операциив виде инструкций присваивания, пытаясь связать имя L со списком:>>> L = L.append(4)>>> print LNone# Но метод append возвращает значение None, а не L# Поэтому мы теряем весь список!Такая операция дает неверный результат – такие методы списка, как apend,sort и reverse, всегда выполняют непосредственное изменение объекта, но они362Глава 11.

Присваивание, выражения и printне возвращают список, который был изменен с их помощью. В действительности они возвращают объект None. Если результат такой операции присвоить тойже переменной, вы потеряете список (скорее всего, он будет уничтожен в ходепроцесса сборки мусора!).Поэтому не делайте этого. Мы еще раз вернемся к этому явлению в разделе«Распространенные ошибки программирования» в конце этой части книги,потому что подобные ситуации могут складываться в контексте выполнениянекоторых операторов цикла, с которыми мы познакомимся в последующихглавах.Операция printВ языке Python инструкция print – это просто удобный для программистов интерфейс к стандартному потоку вывода.С технической точки зрения эта инструкция преобразует объекты в текстовоепредставление и либо посылает результат в поток стандартного вывода, либопередает другому объекту, похожему на файл.

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

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

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

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