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

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

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

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

В инструкции «Х += т'» Х может оказаться сложным выражением, которое в комбинированной форме должно быть вычислено всего один раз. В более длинной формезапись «Х = Х + т' Х появляется дважды и поэтому данное выражение должно быть вычислено дважды. Вследствие этого дополняющие присваивания выполняются обычно быстрее. ° Автоматически выбирается оптимальный алгоритм выполнения. Для объектов, поддерживающих возможность непосредственного изменения, дополняющие присваивания автоматически выполняются непосредственно на самих объектах вместо выполнения более медленной операции копирования. И последний момент, который требует дополнительных разъяснений.

Дополняющие присваивания в случае операций, выполняемых непосредственно над объектами, могут служить для оптимизации изменяемых объектов. Вспомним, что списки могут расширяться разными способами. Чтобы добавить в список единственный элемент, мы можем выполнить операцию конкатенации или вызвать метод аррепбп Инструкции присваивания »> [1, 2, 3, 4, 5, 6, 7, 8] В обоих случаях операция конкатенации несет в себе меньше побочных эффектов при работе с разделяемыми ссылками на объекты, но вообще она выполняется медленнее, чем эквивалентные операции, воздействующие на объект непосредственно.

Операция конкатенации должна создать новый объект, копию в списке слева, и затем копию в списке справа. В противовес ей метод, воздействующий на объект непосредственно, просто добавляет новый элемент в конец блока памяти. При использовании дополняющего присваивания для расширения списка мы можем не думать об этих деталях — интерпретатор РуФоп автоматически вызовет более быстрый метод ехгепб вместо использования более медленной операции конкатенации, которую предполагает оператор +: »> С += [9, 10] В Выполняется как Пектепб[Г9, 10)) »> [1, 2, 3, 4, 5, 6, 7, 8.

9, 10] Дополняющее присваивание и разделяемые ссылки Такой порядок вещей чаще всего именно то, что нам требуется, но необходимо учитывать — он предполагает, что применительно к спискам операция += выполняет изменения непосредственно в объекте, а это далеко не то же самое, что операция конкатенации +, в результате которой всегда создается новый объект.

Как всегда в случае использования разделяемых ссылок, различия в поведении этих операций могут иметь значение, если имеются другие ссылки на изменяемый объект: »>к=[1, 2] »> Н »> С м Ь + (3 4] >»ИН [[1, 2, 3, 4], [1, В ь и М ссыплются нв один и тот ие объект В Операция конкатенации создает новый объект В Мзиеняется Ц но не М 2]) »>к=[1, 2] >» Н »> с += [3, 4] в Операция += предполагает вызов метода ех1епе »> Ц Н е Значение и токе изиенилось~ [[1,2,3,4],[1,2,3,4!) Все это имеет значение только для изменяемых объектов, таких как списки и словари, и к тому же это не совсем ясный случай (по крайней мере, пока его влияние не скажется на вашем программном коде!).

Если вам требуется избежать создания системы разделяемых ссылок, создавайте копии изменяемых объектов. Правила именования переменных Теперь, когда мы исследовали инструкции присваивания, настало время более формально подойти к вопросу выбора имен переменных. В язы- Глава11. Присваивание, выражения и рпп1 Регистр символов в именах имеет значение: имена ЯРАМ и яраа считаются различными именами В языке Ру1Ьоп регистр символов всегда принимается во внимание, как в именах, которые вы создаете, так и в зарезервированных словах. Например, имена Х и х — это две разные переменные.

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

Например, если попытаться использовать переменную с именем с1аяя, интерпретатор выведет сообщение о синтаксической ошибке, однако имена К1аяя и С1аяя являются вполне допустимыми. В табл. 11.3 перечислены слова, которые в настоящее время зарезервированы языком РуФЬоп (и, следовательно, запрещены для использования в качестве имен переменных). Таблица 11.3. Зарезервированные слова языка Ругггоп а1г1 апс разя ая (а 2.6 н более поздних) 1арсг1 рг1п1 а1яа ехсарг 1п га1яе аяяегг Ьгеаа с1аяя Солгаппе 1я ге1пгп ехсс Гюа11у 1ааЬСа псп1оса1 (а 3.0) ггу нт1е (ог тгп (в 2.6н более поздних) (гоа се( псг р1саа1 сг у(е1С О В версии Ру(Ьоп 2.2 слово у1е1С было необязательным расширением, но, начиная с версии 2.3, оно стало стандартным зарезервированным словом.

Оно используется совместно с генераторами ке РуФЬоп имена появляются в момент, когда им присванваются некоторые значения, однако существует несколько правил, которым желательно следовать при выборе имен для всего сущего в ваших программах: Синтаксисг (символ подчеркивания или алфавитный символ) + (любое число символов, цифр или символов подчеркивания) Имена переменных должны начинаться с символа подчеркивания или с алфавитного символа, за которым может следовать произвольное число алфавитных символов, цифр или символов подчеркивания. Допустимыми именами являются: яраа, яраа и Брав 1, а 1 Брав, ярааб и ЮФ! — недопустимыми.

зоз Инструкции присваивания функций — новой особенностью, которая будет обсуждаться з главе 17. Это один пз небольшого числа элементов языка, з котором была нарушена обратная совместимость с прежними версиями. Однако такое преобразование слова у!е1С было выполнено не вдруг — з версии 2.2 прн его использовании генерировалось предупреждение, и оно было недопустимым до версии 2.3. Похожим образом з Руоп 2.6 появились новые зарезервированные слова н1тз и зз для использования з менеджере контекстов (нозая форма обработки исключений). В версии 2.5 эти слова пе считаются зарезервированными, пока менеджер контекстов не будет включен вручную (подробностн приводятся з главе 27).

Прн использовании з версии 2.5 слова зття н зз вызывают появление предупреждений о грядущих изменениях — исключение составляет версия 1ВЬЕ з Рут)топ 2.5, где эта особенность включается автоматически (т. е. использование этих слов з качестве имен переменных з версии 2.5 будет вызывать ошибку, по только з интерфейсе 1ВЬЕ). Зарезервированные слова языка РуФ)топ всегда записываются символами нижнего регистра и они действительно зарезервированы — в отличие от имен в области видимости по умолчанию, о которой будет рассказываться в следующей части книги, вы не можете переопределять зарезервированные слова посредством операции присваивания (например, зпб = 1 приведет к появлению ошибки).' Кроме того, поскольку имена модулей в инструкции тпрогт становятся переменными в сценарии, это накладывает ограничения на имена файлов с модулями.

Вы можете создать файлы с именами аптг'.ру и тусос(е,ру, но вы не сможете импортировать их, потому что их имена без расширения «.ру» в программном коде будут преобразованы в имена переменных и поэтому должны следовать только что обозначенным правилам (зарезервированные слова запрещены, а символы дефиса являются недопустимыми, хотя можно использовать символы подчеркивания). Соглашения по именованию Помимо указанных правил существует еще целый ряд соглашений— правил, которые не являются обязательными, но которым обычно следуют на практике. Например, имена с двумя символами подчеркивания в начале и в конце (например, паве ) обычно имеют особый смысл для интерпретатора, поэтому вам следует избегать их использования для именования своих переменных.

Ниже приводится список соглашений, которым было бы желательно следовать: ° Имена, начинающиеся с одного символа подчеркивания ( Х), не импортируются инструкцией т гсэ зсбс1е тзротт * (см. главу 19). Тем пе менее, з дуг)топ, реализации Рут)топ на языке дача, имена пользовательских переменных иногда могут совпадать с зарезервированными словами языка Рут)топ.

304 Глава11. Присваивание, выражения и рлл1 ° Имена, имеющие два символа подчеркивания в начале и в конце ( Х ), являются системными именами, которые имеют особый смысл для интерпретатора. ° Имена, начинающиеся с двух символов подчеркивания н не оканчивающиеся двумя символами подчеркивания ( Х), являются локальными (автоматически подменяются другими именами) для объемлющего класса (как описывается в главе 26). ° Имя, состоящее из единственного символа подчеркивания ( ), хранит результат последнего выражения при работе в интерактивной оболочке.

В дополнение к этим соглашениям существует еще ряд других соглашений, которым обычно стремятся следовать программисты. Например, далее в книге мы увидим, что имена классов обычно начинаются с заглавного символа, а имена модулей — с прописного, и что имя ве11, хотя и не является зарезервированным, играет особую роль в классах. В четвертой части книги мы познакомимся с еще одной крупной категорией имен, которые называются встроенными, т. е. предопределенными, но не зарезервированными (вследствие чего они допускают переопределение: инструкция орел = 42 является вполне допустимой, но иногда вы можете пожалеть, что это так!).

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

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

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

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