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

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

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

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

Инструкция X //= Y(деление с округлением вниз) была добавлена в версии Python 2.2.Комбинированные инструкции присваивания обладают следующими пре­иму­ществами:1•• Уменьшается объем ввода с клавиатуры. Нужно ли мне продолжать?•• Левая часть инструкции должна быть получена всего один раз. В инструкции «X += Y» X может оказаться сложным выражением, которое в комбинированной форме должно быть вычислено всего один раз. В более длиннойформе записи «X = X + Y» X появляется дважды, и поэтому данное выражениедолжно быть вычислено дважды.

Вследствие этого комбинированные инструкции присваивания выполняются обычно быстрее.•• Автоматически выбирается оптимальный алгоритм выполнения. Для объектов, поддерживающих возможность непосредственного изменения, комбинированные инструкции присваивания автоматически выполняютсянепосредственно на самих объектах, вместо выполнения более медленнойоперации копирования.И последний момент, который требует дополнительных разъяснений. Комбинированные инструкции присваивания, при применении к изменяемым объектам, могут служить для оптимизации. Вспомним, что списки могут расширяться разными способами.

Чтобы добавить в список единственный элемент,мы можем выполнить операцию конкатенации или вызвать метод append:>>>>>>>>>[1,>>>>>>[1,L = [1, 2]L = L + [3] # Конкатенация: более медленнаяL2, 3]L.append(4) # Более быстрая, но изменяет сам объектL2, 3, 4]А чтобы добавить несколько элементов, мы можем либо снова выполнить операцию конкатенации, либо вызвать метод extend2:>>>>>>[1,>>>L = L + [5, 6] # Конкатенация: более медленнаяL2, 3, 4, 5, 6]L.extend([7, 8]) # Более быстрая, но изменяет сам объект1Программисты C/C++, конечно, заметят, что несмотря на появление в языке Pythonтаких инструкций, как X +=Y, в нем до сих пор отсутствуют операторы инкрементаи декремента (например, X++, --X). Однако эти операторы вообще не соответствуютмодели языка Python, в котором отсутствует возможность непосредственно изменятьнеизменяемые объекты, такие как числа.2Как предлагалось в главе 6, для этого также можно было бы использовать операциюприсваивания срезу (например, L[len(L):] = [11,12,13]), но этот прием работает практически так же, как метод extend.355Инструкции присваивания>>> L[1, 2, 3, 4, 5, 6, 7, 8]В обоих случаях операция конкатенации несет в себе меньше побочных эффектов при работе с разделяемыми ссылками на объекты, но вообще она выполняется медленнее, чем эквивалентные операции, воздействующие на объект непосредственно.

Операция конкатенации должна создать новый объект, копиюсписка слева, и затем скопировать в него список справа. В противовес ей метод,воздействующий на объект непосредственно, просто добавляет новый элементв конец блока памяти.При использовании комбинированной инструкции присваивания для расширения списка мы можем не думать об этих деталях – интерпретатор Python��������������автоматически вызовет более быстрый метод extend вместо использования болеемедленной операции конкатенации, которую предполагает оператор +:>>> L += [9, 10] # Выполняется как L.extend([9, 10])>>> L[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]Комбинированные инструкции присваиванияи разделяемые ссылкиТакой порядок вещей чаще всего именно то, что нам требуется, но необходимоучитывать – он предполагает, что применительно к спискам операция += выполняет изменения непосредственно в объекте, а это далеко не то же самое, чтооперация конкатенации +, в результате которой всегда создается новый объект.

Как всегда в случае использования разделяемых ссылок, различия в поведении этих операций могут иметь значение, если имеются другие ссылки наизменяемый объект:>>> L = [1, 2]>>> M = L>>> L = L + [3, 4]>>> L, M([1, 2, 3, 4], [1,# L и M ссылаются на один и тот же объект# Операция конкатенации создает новый объект# Изменяется L, но не M2])>>> L = [1, 2]>>> M = L>>> L += [3, 4]# Операция += предполагает вызов метода extend>>> L, M# Значение M тоже изменилось!([1, 2, 3, 4], [1, 2, 3, 4])Все это имеет значение только для изменяемых объектов, таких как спискии словари, и к тому же это не совсем ясный случай (по крайней мере, пока еговлияние не скажется на вашем программном коде!). Если вам требуется избежать создания системы разделяемых ссылок, создавайте копии изменяемыхобъектов.Правила именования переменныхТеперь, когда мы исследовали инструкции присваивания, настало время болееформально подойти к вопросу выбора имен переменных.

В языке Python имена появляются в момент, когда им присваиваются некоторые значения, однако существует несколько правил, которым желательно следовать при выбореимен для всего сущего в ваших программах:356Глава 11. Присваивание, выражения и printСинтаксис: (символ подчеркивания или алфавитный символ) + (любое числосимволов, цифр или символов подчеркивания)Имена переменных должны начинаться с символа подчеркивания или с алфавитного символа, за которым может следовать произвольное число алфавитных символов, цифр или символов подчеркивания. Допустимыми именами являются: _spam, spam и Spam_1, а 1_Spam, spam$ и @#! – недопустимыми.Регистр символов в именах имеет значение: имена SPAM и spam считаются различнымиВ языке Python регистр символов всегда принимается во внимание, какв именах, которые вы создаете, так и в зарезервированных словах.

Например, имена X и x – это две разные переменные. Для обеспечения переносимости регистр символов учитывается и в именах импортируемых модулей,даже на платформах, где файловые системы не учитывают регистр символов.Запрещено использовать зарезервированные словаИмена определяемых вами переменных не могут совпадать с зарезервированными словами, имеющими в языке Python специальное назначение. Например, если попытаться использовать переменную с именем class, интерпретатор выведет сообщение о синтаксической ошибке, однако имена klassи Class являются вполне допустимыми.

В табл. 11.3 перечислены слова, которые в настоящее время зарезервированы языком Python (и, следовательно, запрещены для использования в качестве имен переменных).Таблица 11.3. Зарезервированные слова в версии Python 3.0FalseclassfinallyisreturnNonecontinueforlambdatryTruedeffromnonlocalwhileanddelglobalnotwithaselififoryieldassertelseimportpassbreakexceptinraiseВ табл. 11.3 приводятся слова, зарезервированные в версии Python���������������������������� 3.0. В ���Python 2.6 набор зарезервированных слов немного отличается:•• print – это зарезервированное слово, потому что оно соответствует инструкции вывода, а не встроенной функции (подробнее об этом рассказываетсяниже в этой главе).•• exec – это зарезервированное слово, потому что оно соответствует инструкции, а не встроенной функции.•• nonlocal – не является зарезервированным словом, потому что эта инструкция недоступна в версии 2.6.В более ранних версиях ��������������������������������������������������Python��������������������������������������������ситуация с зарезервированными словами складывалась почти так же, с небольшими отклонениями:357Инструкции присваивания•• with и as не были зарезервированными словами до версии �������������������Python������������� 2.6, в которой впервые официально появились менеджеры контекста.•• yield не было зарезервированным словом до версии Python 2.3, в которойвпервые появились функции-генераторы.•• В версии 2.5 инструкция yield была преобразована в выражение, но не стала встроенной функцией, а осталась зарезервированным словом.В большинстве своем, зарезервированные слова языка Python записываютсясимволами нижнего регистра, и они действительно зарезервированы – в отличие от имен в области видимости по умолчанию, о которой будет рассказываться в следующей части книги, вы не можете переопределять зарезервированныеслова посредством операции присваивания (например, and = 1 приведет к появлению ошибки).1Кроме того, что первые три зарезервированных слова в табл. 11.3, True, Falseи None, записываются символами разных регистров, они еще имеют не совсемобычное назначение – они определены в области видимости по умолчанию,о которой рассказывается в главе 17, и с технической точки зрения являютсяименами переменных, которым присвоены объекты.

Однако во всех остальныхсмыслах они являются зарезервированными словами и не могут использоваться для других целей, кроме как представлять присвоенные им объекты. Всеостальные зарезервированные слова являются частью синтаксиса языка ���Python и могут появляться только в определенном контексте.Кроме того, поскольку имена модулей в инструкции import становятся переменными в ваших сценариях, это накладывает ограничения на имена файловс модулями.

Вы можете создать файлы с именами and.py и my-code.py, но вы несможете импортировать их, потому что их имена без расширения «.py» в программном коде будут преобразованы в имена переменных и поэтому должныследовать только что обозначенным правилам (зарезервированные слова запрещены, а символы дефиса являются недопустимыми, хотя можно использоватьсимволы подчеркивания). Мы еще вернемся к этой теме в пятой части книги.Правила внесения измененийБудет интересно отметить, насколько постепенно и поэтапно вносятсяизменения в перечень зарезервированных слов языка. Когда появляетсякакая-нибудь новая особенность, которая может отрицательно сказатьсяна работоспособности существующих программ, она обычно сначала вводится как необязательная, а в интерпретатор встраивается вывод предупреждения об использовании «нерекомендуемой» возможности, котороедействует на протяжении одного или более выпусков, прежде чем новаявозможность официально будет включена в состав языка.1Тем не менее в Jython, реализации Python на языке Java, имена пользовательскихпеременных иногда могут совпадать с зарезервированными словами языка Python.Краткий обзор Jython приводится в главе 2.358Глава 11.

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

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

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

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