Fluent Python by Luciano Ramalho Free Download
Python’s simplicity lets you become productive quickly, but this often means you aren’t using everything it has to offer. With this hands-on guide, you’ll learn how to write effective, idiomatic Python code by leveraging its best—and possibly most neglected—features. Author Luciano Ramalho takes you through Python’s core language features and libraries, and shows you how to make your code shorter, faster, and more readable at the same time.
Many experienced programmers try to bend Python to fit patterns they learned from other languages, and never discover Python features outside of their experience. With this book, those Python programmers will thoroughly learn how to become proficient in Python 3.
- Python data model: understand how special methods are the key to the consistent behavior of objects
- Data structures: take full advantage of built-in types, and understand the text vs bytes duality in the Unicode age
- Functions as objects: view Python functions as first-class objects, and understand how this affects popular design patterns
- Object-oriented idioms: build classes by learning about references, mutability, interfaces, operator overloading, and multiple inheritance
- Control flow: leverage context managers, generators, coroutines, and concurrency with the concurrent.futures and asyncio packages
- Metaprogramming: understand how properties, attribute descriptors, class decorators, and metaclasses work
Fluent Python, 2nd Edition
“Python is an easy to learn, powerful programming language.” Those are the first words of the official Python 3.10 tutorial. That is true, but there is a catch: because the language is easy to learn and put to use, many practicing Python programmers leverage only a fraction of its powerful features.
An experienced programmer may start writing useful Python code in a matter of hours. As the first productive hours become weeks and months, a lot of developers go on writing Python code with a very strong accent carried from languages learned before. Even if Python is your first language, often in academia and in introductory books it is presented while carefully avoiding language-specific features.
As a teacher introducing Python to programmers experienced in other languages, I see another problem that this book tries to address: we only miss stuff we know about. Coming from another language, anyone may guess that Python supports regular expressions, and look that up in the docs. But if you’ve never seen tuple unpacking or descriptors before, you will probably not search for them, and you may end up not using those features just because they are specific to Python.
This book is not an A-to-Z exhaustive reference of Python. Its emphasis is on the language features that are either unique to Python or not found in many other popular languages. This is also mostly a book about the core language and some of its libraries. I will rarely talk about packages that are not in the standard library, even though the Python package index now lists more than 60,000 libraries, and many of them are incredibly useful.
Если вам понравилась эта книга поделитесь ею с друзьями, тем самым вы помогаете нам развиваться и добавлять всё больше интересных и нужным вам книг!
Python. К вершинам мастерства PDF
Fluent Python Python К вершинам мастерства CLEAR, CONCISE, AND EFFECTIVE PROGRAMMING Лучано Рамальо Лучано Рамальо Python. К вершинам мастерства Fluent Python Luciano Ramalho Beijing • Cambridge • Farnham • Köln • Sebastopol • Tokyo Python. К вершинам мастерства Лучано Рамальо Москва, 2016 УДК 004.438Python:004.6 ББК 32.973.22 Р21 Р21 Лучано Рамальо Python. К вершинам мастерства / Пер. с англ. Слинкин А. А. – М.: ДМК Пресс, 2016. – 768 с.: ил. ISBN 978-5-97060-384-0 Язык Python настолько прост, что научиться продуктивно писать на нем программы можно быстро, но зачастую вы при этом используете не все имеющиеся в нем возможности. Данная книга покажет, как создавать эф- фективный идиоматичный код на Python, задействуя его лучшие – и иногда несправедливо игнорируемые – черты. Автор, Лучано Рамальо, рассказывает о базовых средствах и библиотеках Python и демонстрирует, как сделать код одновременно короче, быстрее и понятнее. Многие опытные программисты стараются подогнать Python под приемы, знакомые им по работе с другими языками. Эта книга покажет, как достичь истинного профессионализма в программировании на Python 3. Издание предназначено для программистов, уже работающих на Python, но также может быть полезно и начинающим пользователям языка. УДК 004.438Python:004.6 ББК 32.973.22 Original English language edition published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. Copyright © 2015 O’Reilly Media, Inc. Russian- language edition copyright © 2015 by DMK Press. All rights reserved. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность технических ошибок все равно существует, издательство не может га- рантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. ISBN 978-1-491-94600-8 (англ.) © Luciano Gama de Sousa Ramalho, 2015. ISBN 978-5-97060-384-0 (рус.) © Оформление, перевод на русский язык, издание, ДМК Пресс, 2016 ОГЛАВЛЕНИЕ Предисловие . 17 На кого рассчитана эта книга . 18 На кого эта книга не рассчитана . 18 Как организована эта книга . 18 Практикум . 20 Как производился хронометраж . 21 Поговорим: мое личное мнение . 21 Терминология Python . 22 Использованная версия Python . 22 Графические выделения . 22 О примерах кода . 23 Как с нами связаться . 23 Благодарности . 24 ЧАСТЬ I. Пролог . 27 Глава 1. Модель данных в языке Python . 28 Колода карт на Python . 29 Как используются специальные методы . 33 Эмуляция числовых типов . 33 Строковое представление . 35 Арифметические операторы . 36 Булево значение пользовательского типа . 37 Сводка специальных методов . 37 Почему len – не метод . 39 Резюме . 40 Дополнительная литература . 40 ЧАСТЬ II. Структуры данных . 43 Глава 2. Массив последовательностей . 44 Общие сведения о встроенных последовательностях . 45 Списковое включение и генераторные выражения. 46 Списковое включение и удобочитаемость . 46 Сравнение спискового включения с map и filter . 48 Декартовы произведения . 49 7 Оглавление Генераторные выражения . 50 Кортеж – не просто неизменяемый список . 52 Кортежи как записи . 52 Распаковка кортежа . 53 Использование * для выборки лишних элементов . 54 Распаковка вложенного кортежа . 55 Именованные кортежи . 56 Кортежи как неизменяемые списки . 57 Получение среза . 59 Почему в срезы и диапазоны не включается последний элемент . 59 Объекты среза . 59 Многомерные срезы и многоточие . 61 Присваивание срезу . 61 Использование + и * для последовательностей . 62 Построение списка списков . 63 Составное присваивание последовательностей . 64 Головоломка: присваивание A += . 66 Метод list.sort и встроенная функция sorted . 68 Средства работы с упорядоченными последовательностями в модуле bisect . 70 Поиск средствами bisect . 70 Вставка с помощью функции bisect.insort . 73 Когда список не подходит . 74 Массивы . 74 Представления областей памяти. 78 Библиотеки NumPy и SciPy . 79 Двусторонние и другие очереди . 81 Резюме . 85 Дополнительная литература . 86 Глава 3. Словари и множества . 91 Общие типы отображений . 91 Словарное включение . 94 Обзор наиболее употребительных методов отображений . 94 Обработка отсутствия ключей с помощью setdefault . 97 Отображения с гибким поиском по ключу . 99 defaultdict: еще один подход к обработке отсутствия ключа . 99 Метод __missing__ . 101 Вариации на тему dict . 103 Создание подкласса UserDict . 105 Неизменяемые отображения . 106 Теория множеств . 108 Литеральные множества . 109 Множественное включение . 111 8 Оглавление Операции над множествами . 111 Под капотом dict и set . 114 Экспериментальная демонстрация производительности . 115 Хэш-таблицы в словарях . 117 Практические последствия механизма работы dict . 120 Как работают множества – практические следствия . 123 Резюме . 123 Дополнительная литература . 124 Поговорим . 124 Глава 4. Текст и байты. 126 О символах и не только . 127 Все, что нужно знать о байтах . 128 Структуры и представления областей памяти . 131 Базовые кодировщики и декодировщики . 132 Проблемы кодирования и декодирования . 134 Обработка UnicodeEncodeError . 134 Обработка UnicodeDecodeError . 135 Исключение SyntaxError при загрузке модулей и неожиданной кодировкой . 136 Как определить кодировку последовательности байтов . 138 BOM: полезный крокозябр . 139 Обработка текстовых файлов . 140 Кодировки по умолчанию: сумасшедший дом . 143 Нормализация Unicode для правильного сравнения . 146 Сворачивание регистра . 149 Служебные функции для сравнения нормализованного текста . 150 Экстремальная «нормализация»: удаление диакритических знаков . 151 Сортировка Unicode-текстов . 154 Сортировка с помощью алгоритма упорядочивания Unicode . 156 База данных Unicode . 157 Двухрежимный API . 159 str и bytes в регулярных выражениях . 159 str и bytes в функциях из модуля os . 160 Резюме . 162 Дополнительная литература . 164 Поговорим . 166 ЧАСТЬ III. Функции как объекты . 169 Глава 5. Полноправные функции . 170 Обращение с функцией как с объектом . 171 Функции высшего порядка . 172 Современные альтернативы функциям map, filter и reduce . 173 9 Оглавление Анонимные функции . 175 Семь видов вызываемых объектов . 176 Пользовательские вызываемые типы . 177 Интроспекция функций . 178 От позиционных к чисто именованным параметрам . 180 Получение информации о параметрах . 182 Аннотации функций . 186 Пакеты для функционального программирования . 188 Модуль operator . 188 Фиксация аргументов с помощью functools.partial . 191 Резюме . 193 Дополнительная литература . 194 Поговорим . 195 Глава 6. Реализация паттернов проектирования с помощью полноправных функций . 198 Практический пример: переработка паттерна Стратегия . 199 Классическая Стратегия . 199 Функционально-ориентированная стратегия . 203 Выбор наилучшей стратегии: простой подход . 206 Поиск стратегий в модуле . 207 Паттерн Команда . 208 Резюме . 210 Дополнительная литература . 211 Поговорим . 212 Глава 7. Декораторы функций и замыкания . 214 Краткое введение в декораторы . 215 Когда Python выполняет декораторы . 216 Паттерн Стратегия, дополненный декоратором . 218 Правила видимости переменных . 219 Замыкания . 222 Объявление nonlocal . 225 Реализация простого декоратора . 227 Как это работает . 228 Декораторы в стандартной библиотеке . 230 Кэширование с помощью functools.lru_cache . 230 Одиночная диспетчеризация и обобщенные функции . 233 Композиции декораторов . 236 Параметризованные декораторы . 236 Параметризованный регистрационный декоратор . 237 Параметризованный декоратор clock . 239 10 Оглавление Резюме . 242 Дополнительная литература . 242 Поговорим . 243 ЧАСТЬ IV. Объектно-ориентированные идиомы. 247 Глава 8. Ссылки на объекты, изменяемость и повторное использование . 248 Переменные – не ящики . 249 Тождественность, равенство и синонимы . 250 Выбор между == и is . 252 Относительная неизменяемость кортежей . 253 По умолчанию копирование поверхностное . 254 Глубокое и поверхностное копирование произвольных объектов . 256 Параметры функций как ссылки . 258 Значения по умолчанию изменяемого типа: неудачная мысль . 259 Защитное программирование при наличии изменяемых параметров . 261 del и сборка мусора . 263 Слабые ссылки . 265 Коллекция WeakValueDictionary . 266 Ограничения слабых ссылок. 268 Как Python хитрит с неизменяемыми объектами . 269 Резюме . 270 Дополнительная литература . 271 Поговорим . 272 Глава 9. Объект в духе Python . 276 Представления объекта . 277 И снова класс вектора . 277 Альтернативный конструктор . 280 Декораторы classmethod и staticmethod . 281 Форматирование при выводе . 282 Хэшируемый класс Vector2d . 286 Закрытые и «защищенные» атрибуты в Python . 291 Экономия памяти с помощью атрибута класса __slots__ . 293 Проблемы при использовании __slots__ . 296 Переопределение атрибутов класса . 296 Резюме . 299 Дополнительная литература . 300 Поговорим . 301 Глава 10. Рубим, перемешиваем и нарезаем последовательности . 305
Similar Python. К вершинам мастерства
Most Popular
Latest upload
DMCA & Copyright: Dear all, most of the website is community built, users are uploading hundred of books everyday, which makes really hard for us to identify copyrighted material, please contact us if you want any material removed.
Copyright @ PDFdrive.to, 2022 | We love our users