python лучшие практики и инструменты яворски м зиаде т

Python. Лучшие практики и инструменты, 3-е изд.

python лучшие практики и инструменты яворски м зиаде т. Смотреть фото python лучшие практики и инструменты яворски м зиаде т. Смотреть картинку python лучшие практики и инструменты яворски м зиаде т. Картинка про python лучшие практики и инструменты яворски м зиаде т. Фото python лучшие практики и инструменты яворски м зиаде т

Python — динамический язык программирования, применимый в широком спектре задач благодаря своей простой, но мощной сути. Писать на Python легко, но сделать код удобочитаемым, универсальным и простым в сопровождении — сложно. В третьем издании данной книги вы ознакомитесь с практическими рекомендация­ми, полезными инструментами и стандартами, используемыми профессиональными разработчиками на Python, так что сумеете преодолеть данную проблему.

Изучив эту книгу, вы станете экспертом в написании эффективного и удобного в сопровождении кода на Python.

Книга написана для разработчиков на Python, желающих продвинуться в освоении этого языка. Под разработчиками мы имеем в виду в основном программистов, которые зарабатывают на жизнь программированием на Python. Дело в том, что книга сосредоточена на средствах и методах, наиболее важных для создания производительного, надежного и удобного в сопровождении программного обеспечения на Python. Это не значит, что в книге нет ничего интересного для любителей. Она отлично подойдет для тех, кто хочет выйти на новый уровень в изучении Python.

Название: Python. Лучшие практики и инструменты, 3-е изд.
Авторы: Михал Яворски, Тарек Зиаде
Год издания: 2021
Издательство: Питер
Язык: русский
Формат: pdf
Страниц: 560
Размер: 10,18 Мб

Скачать Яворски М., Зиаде Т. Python. Лучшие практики и инструменты, 3-е изд.

Источник

Книга «Python. Лучшие практики и инструменты»

Книга написана для разработчиков на Python, желающих продвинуться в освоении этого языка. Под разработчиками мы имеем в виду в основном программистов, которые зарабатывают на жизнь программированием на Python. Дело в том, что книга сосредоточена на средствах и методах, наиболее важных для создания производительного, надежного и удобного в сопровождении программного обеспечения на Python.

Это не значит, что в книге нет ничего интересного для любителей. Она отлично подойдет для тех, кто хочет выйти на новый уровень в изучении Python. Базовых навыков языка будет достаточно, чтобы понять изложенный материал, хотя менее опытным программистам придется приложить некоторые усилия. Книга также будет хорошим введением в Python 3.7 для тех, кто слегка отстал от жизни и пользуется версией Python 2.7 или еще более ранней.

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

Паттерны доступа к расширенным атрибутам

Изучая Python, многие программисты C++ и Java удивляются отсутствию ключевого слова private. Наиболее близкая к нему концепция — это искажение (декорирование) имени (name mangling). Каждый раз, когда атрибут получает префикс __, он динамически переименовывается интерпретатором:

Доступ к атрибуту __secret_value по его изначальному имени приведет к выбрасыванию исключения AttributeError:

Это сделано специально для того, чтобы избежать конфликта имен по наследованию, так как атрибут переименовывается именем класса в качестве префикса. Это не точный аналог private, поскольку атрибут может быть доступен через составленное имя. Данное свойство можно применить для защиты доступа некоторых атрибутов, однако на практике __ не используется никогда. Если атрибут не является публичным, то принято использовать префикс _. Он не вызывает алгоритм декорирования имени, но документирует атрибут как приватный элемент класса и является преобладающим стилем.

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

Дескриптор позволяет настроить действие, которое происходит, когда вы ссылаетесь на атрибут объекта.

Дескрипторы лежат в основе организации сложного доступа к атрибутам в Python. Они используются для реализации свойств, методов, методов класса, статических методов и надтипов. Это классы, которые определяют, каким образом будет получен доступ к атрибутам другого класса. Иными словами, класс может делегировать управление атрибута другому классу.

Классы дескрипторов основаны на трех специальных методах, которые формируют протокол дескриптора:

__set__(self, obj, value) — вызывается всякий раз, когда задается атрибут. В следующих примерах мы будем называть его «сеттер»;

__get__(self, obj, owner=None) — вызывается всякий раз, когда считывается атрибут (далее геттер);

__delete__(self, object) — вызывается, когда del вызывается атрибутом.

Дескриптор, который реализует __get__ и __set__, называется дескриптором данных. Если он просто реализует __get__, то называется дескриптором без данных.

Методы этого протокола фактически вызываются методом __getattribute__() (не путать с __getattr__(), который имеет другое назначение) при каждом поиске атрибута. Всякий раз, когда такой поиск выполняется с помощью точки или прямого вызова функции, неявно вызывается метод __getattribute__(), который ищет атрибут в следующем порядке.

Для ясности приведем пример из официальной документации Python, в котором показано, как дескрипторы работают в реальном коде:

Вот пример его использования в интерактивном режиме:

Пример ясно показывает, что если класс имеет дескриптор данных для этого атрибута, то вызывается метод __get__(), чтобы вернуть значение каждый раз, когда извлекается атрибут экземпляра, а __set__() вызывается всякий раз, когда такому атрибуту присваивается значение. Использование метода __del__ в предыдущем примере не показано, но должно быть очевидно: он вызывается всякий раз, когда атрибут экземпляра удаляется с помощью оператора del instance.attribute или delattr(instance, ‘attribute’).

Разница между дескрипторами с данными и без имеет большое значение по причинам, которые мы упомянули в начале подраздела. В Python используется протокол дескриптора для связывания функций класса с экземплярами через методы. Они также применяются в декораторах classmethod и staticmethod. Это происходит потому, что функциональные объекты по сути также являются дескрипторами без данных:

Это верно и для функций, созданных с помощью лямбда-выражений:

Таким образом, если __dict__ не будет иметь приоритет над дескрипторами без данных, мы не сможем динамически переопределить конкретные методы уже созданных экземпляров во время выполнения. К счастью, благодаря тому, как дескрипторы работают в Python, это возможно; поэтому разработчики могут выбирать, в каких экземплярах что работает, не используя подклассы.

Пример из реальной жизни: ленивое вычисление атрибутов. Один из примеров использования дескрипторов — задержка инициализации атрибута класса в момент доступа к нему из экземпляра. Это может быть полезно, если инициализация таких атрибутов зависит от глобального контекста приложения. Другой случай — когда такая инициализация слишком затратна, и неизвестно, будет ли атрибут вообще использоваться после импорта класса. Такой дескриптор можно реализовать следующим образом:

Ниже представлен пример использования:

Официальная библиотека OpenGL Python на PyPI под названием PyOpenGL использует такую технику, чтобы реализовать объект lazy_property, который является одновременно декоратором и дескриптором данных:

Такая реализация аналогична использованию декоратора property (о нем поговорим позже), но функция, которая оборачивается декоратором, выполняется только один раз, а затем атрибут класса заменяется значением, возвращенным этим свойством функции. Данный метод часто бывает полезен, когда необходимо одновременно выполнить два требования:

В следующем примере показано возможное использование модифицированной версии декоратора lazy_property PyOpenGL (здесь lazy_class_attribute) в некоем абстрактном приложении OpenGL. Изменения оригинального декоратора lazy_property требуются для того, чтобы разрешить совместное использование атрибута различными экземплярами класса:

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

Свойства предоставляют встроенный тип дескриптора, который знает, как связать атрибут с набором методов. Свойство принимает четыре необязательных аргумента: fget, fset, fdel и doc. Последний из них может быть предусмотрен для определения строки документации, связанной с атрибутом, как если бы это был метод. Ниже приведен пример класса Rectangle, которым можно управлять либо путем прямого доступа к атрибутам, хранящим две угловые точки, либо с помощью свойств width и height:

В следующем фрагменте кода приведен пример таких свойств, определенных в интерактивной сессии:

Эти свойства облегчают написание дескрипторов, но с ними следует аккуратно обращаться при использовании наследования по классам. Атрибут создается динамически с помощью методов текущего класса и не будет применять методы, которые переопределены в производных классах.

Приведенный в следующем примере код не сможет переопределить реализацию метода fget из свойства width родительского класса (Rectangle):

Чтобы решить эту проблему, все свойство следует перезаписать в производном классе:

К сожалению, код имеет кое-какие проблемы с сопровождением. Может возникнуть путаница, если разработчик решит изменить родительский класс, но забудет обновить вызов свойства. Именно поэтому не рекомендуется переопределять только части поведения свойств. Вместо того чтобы полагаться на реализацию родительского класса, рекомендуется переписать все методы свойств в производных классах, если нужно изменить способ их работы. Обычно других вариантов нет, поскольку изменение свойств поведения setter влечет за собой изменение в поведении getter.

Лучшим вариантом создания свойств будет использование property в качестве декоратора. Это позволит сократить количество сигнатур методов внутри класса и сделать код более читабельным и удобным в сопровождении:

Интересная функция, которая очень редко используются разработчиками, — это слоты. Они позволяют установить статический список атрибутов для класса с помощью атрибута __slots__ и пропустить создание словаря __dict__ в каждом экземпляре класса. Они были созданы для экономии места в памяти для классов с малочисленными атрибутами, так как __dict__ создается не в каждом экземпляре.

Кроме того, они могут помочь в создании классов, чьи сигнатуры нужно заморозить. Например, если вам необходимо ограничить динамические свойства языка для конкретного класса, то слоты могут помочь:

Эту возможность нужно использовать с осторожностью. Когда набор доступных атрибутов ограничен слотами, намного сложнее добавить что-то к объекту динамически. Некоторые известные приемы, например обезьяний патч (monkey patching), не будут работать с экземплярами классов, которые имеют определенные слоты. К счастью, новые атрибуты можно добавить к производным классам, если они не имеют собственных определенных слотов:

Михал Яворски — программист на Python с десятилетним опытом. Занимал разные должности в различных компаниях: от обычного фулстек-разработчика, затем архитектора программного обеспечения и, наконец, до вице-президента по разработке в динамично развивающейся стартап-компании. В настоящее время Михал — старший бэкенд-инженер в Showpad. Имеет большой опыт в разработке высокопроизводительных распределенных сервисов. Кроме того, является активным участником многих проектов Python с открытым исходным кодом.
Тарек Зиаде — Python-разработчик. Живет в сельской местности недалеко от города Дижон во Франции. Работает в Mozilla, в команде, отвечающей за сервисы. Тарек основал французскую группу пользователей Python (называется Afpy) и написал несколько книг о Python на французском и английском языках. В свободное от хакинга и тусовок время занимается любимыми хобби: бегом или игрой на трубе.

Вы можете посетить его личный блог (Fetchez le Python) и подписаться на него в Twitter (tarek_ziade).

О научном редакторе

Коди Джексон — кандидат наук, основатель компании Socius Consulting, работающей в сфере IT и консалтинга по управлению бизнесом в Сан-Антонио, а также соучредитель Top Men Technologies. В настоящее время работает в CACI International ведущим инженером по моделированию ICS/SCADA. В IT-индустрии с 1994 года, еще со времен службы в ВМФ в качестве ядерного химика и радиотехника. До CACI он работал в университете в ECPI в должности ассистента профессора по компьютерным информационным системам. Выучился программированию на Python самостоятельно, написал книги Learning to Program Using Python и Secret Recipes of the Python Ninja.

Для Хаброжителей скидка 25% по купону — Python

По факту оплаты бумажной версии книги на e-mail высылается электронная книга.

Источник

Python. Лучшие практики и инструменты

Посоветуйте книгу друзьям! Друзьям – скидка 10%, вам – рубли

python лучшие практики и инструменты яворски м зиаде т. Смотреть фото python лучшие практики и инструменты яворски м зиаде т. Смотреть картинку python лучшие практики и инструменты яворски м зиаде т. Картинка про python лучшие практики и инструменты яворски м зиаде т. Фото python лучшие практики и инструменты яворски м зиаде т

Эта и ещё 2 книги за 299 ₽

Отзывы 1

python лучшие практики и инструменты яворски м зиаде т. Смотреть фото python лучшие практики и инструменты яворски м зиаде т. Смотреть картинку python лучшие практики и инструменты яворски м зиаде т. Картинка про python лучшие практики и инструменты яворски м зиаде т. Фото python лучшие практики и инструменты яворски м зиаде т

Хотя авторы опираются на версию Python 3.7, тем не менее они дают в руки читателю современные инструменты и приёмы разработки, отладки и сопровождения программного обеспечения. Для меня, например, эта книга оказалась настоящим откровением.В ней описываются удивительные вещи и приёмы, о которых я совершенно не знал и не догадывался. Думаю, всё это будет очень полезно не только начинающим, но и программистам уровня middle.В общем, современное и полезное издание.

python лучшие практики и инструменты яворски м зиаде т. Смотреть фото python лучшие практики и инструменты яворски м зиаде т. Смотреть картинку python лучшие практики и инструменты яворски м зиаде т. Картинка про python лучшие практики и инструменты яворски м зиаде т. Фото python лучшие практики и инструменты яворски м зиаде т

Хотя авторы опираются на версию Python 3.7, тем не менее они дают в руки читателю современные инструменты и приёмы разработки, отладки и сопровождения программного обеспечения. Для меня, например, эта книга оказалась настоящим откровением.В ней описываются удивительные вещи и приёмы, о которых я совершенно не знал и не догадывался. Думаю, всё это будет очень полезно не только начинающим, но и программистам уровня middle.В общем, современное и полезное издание.

Оставьте отзыв

Напишите отзыв и получите 50 бонусных рублей на ваш счёт ЛитРес

Источник

Python. Лучшие практики и инструменты. Яворски М., Зиаде Т.

Код товара: 1133072

python лучшие практики и инструменты яворски м зиаде т. Смотреть фото python лучшие практики и инструменты яворски м зиаде т. Смотреть картинку python лучшие практики и инструменты яворски м зиаде т. Картинка про python лучшие практики и инструменты яворски м зиаде т. Фото python лучшие практики и инструменты яворски м зиаде т

Python — это динамический язык программирования, используемый в самых разных предметных областях. Хотя писать код на Python просто, гораздо сложнее сделать этот код удобочитаемым, пригодным для многократного использования и легким в поддержке. Третье издание «Python. Лучшие практики и инструменты» даст вам инструменты для эффективного решения любой задачи разработки и сопровождения софта.
Авторы начинают с рассказа о новых возможностях Python 3.7 и продвинутых аспектах синтаксиса Python. Продолжают советами по реализации популярных парадигм, в том числе объектно-ориентированного, функционального и событийно-ориентированного программирования. Также авторы рассказывают о наилучших практиках именования, о том, какими способами можно автоматизировать развертывание программ на удаленных серверах. Вы узнаете, как создавать полезные расширения для Python на C, C++, Cython и CFFI.

Характеристики Python. Лучшие практики и инструменты. Яворски М., Зиаде Т.

Отзывы Python. Лучшие практики и инструменты. Яворски М., Зиаде Т.

    Адрес: Россия, г.Москва Телефоны: +7(499) 350-17-79 Email: pochta@den-magazin.ru

Большой Факельный переулок, 3с2.
График работы магазина
ВТ-ВС с 10:00 до 20:00, ПН выходной

Источник

Python. Лучшие практики и инструменты

Цена действительна только для интернет-магазина и отличается от цен в розничных магазинах.

Оформление товара может не совпадать с представленным на сайте.

Информация по наличию товаров в магазинах обновляется с интервалом в 1 сутки.

В наличии на оптовом складе:

г.Волгоград, ул. Козловская 60а – +7 (8442) 97-55-55

При выборе варианта оплаты наличными, Вы дожидаетесь приезда курьера и передаёте ему сумму за товар в рублях. Курьер предоставляет товар, который можно осмотреть на предмет повреждений, соответствие указанным условиям. Покупатель подписывает товаросопроводительные документы, вносит денежные средства и получает чек.

Также оплата наличными доступна при самовывозе из магазина.

При выборе онлайн оплаты, вы можете оплатить заказ в личном кабинете нажав на кнопку «Оплатить».

ЮKassa покажет все способы, которыми можно заплатить. Сначала — самые популярные и удобные, или те, которыми платите чаще (Банковская карта, ЮMoney, QIWI Wallet, WebMoney, Альфа-Клик, Сбербанк Онлайн и другие). python лучшие практики и инструменты яворски м зиаде т. Смотреть фото python лучшие практики и инструменты яворски м зиаде т. Смотреть картинку python лучшие практики и инструменты яворски м зиаде т. Картинка про python лучшие практики и инструменты яворски м зиаде т. Фото python лучшие практики и инструменты яворски м зиаде т

Курьером по г. Волгоградубесплатно при заказе от 5000р.
Пункт самовывозабесплатно
Почта РФот 140р.
Pickpointот 200р.
Boxberryот 100р.

Действует ли в вашем городе курьерская служба, уточняйте у менеджера магазина

Стоимость доставки будет рассчитана автоматически во время оформления заказа.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *