PDF DJVU (RU) pdf djvu (ru)
key wftJGuDaiRwojCdH2HqmWrthYa5ps5grBMIcDvZmkak
Содержание.
Глава 1. Мыслим категориями языка Python
Рекомендация 1. Следите за тем, какую версию Python вы используете 19
Рекомендация 2. Руководствуйтесь правилами стилевого оформления программ, изложенными в документе РЕР 8 21
Рекомендация 3. Знайте о различиях между типами строк bytes, str и uni code 24
Рекомендация 4. Заменяйте сложные выражения вспомогательными функциями 27
Рекомендация 5. Умейте работать со срезами последовательностей 30
Рекомендация 6. Избегайте совместного использования индексов начала, конца и шага в одном срезе 33
Рекомендация 7. Используйте генераторы списков вместо функций map() и filter () 36
Рекомендация 8. Избегайте использования более двух выражений в генераторах списков 37
Рекомендация 9. По возможности используйте выражения-генераторы вместо генераторов длинных списков 40
Рекомендация 10. По возможности используйте функцию en umerate () вместо функции range () 42
Рекомендация 11. Используйте функцию zip() для параллельной обработки итераторов 43
Рекомендация 12. Избегайте использования блоков else после циклов for и while 46
Рекомендация 13. Старайтесь использовать возможности каждого из блоков конструкции try/except/else/finally 49
Глава 2. Функции
Рекомендация 14. Использование исключений предпочтительнее возврата значения None 53
Рекомендация 15. Знайте, как замыкания взаимодействуют с областью видимости переменных 56
Рекомендация 16. Не упускайте возможность использовать генераторы вместо возврата списков 61
Рекомендация 17. Не забывайте о мерах предосторожности при итерировании аргументов 64
Рекомендация 18. Снижайте визуальный шум с помощью пере-менного количества позиционных аргументов 69
Рекомендация 19. Обеспечивайте опциональное поведение с помощью именованных аргументов 71
Рекомендация 20. Используйте значение None и средство Docstrings при задании динамических значений по умолчанию для аргументов 75
Рекомендация 21. Повышайте ясность кода, используя именованные аргументы 78
Глава З. Классы и наследование
Рекомендация 22. Отдавайте предпочтение структуризации данных с помощью классов, а не словарей или кортежей 83
Рекомендация 23. Принимайте функции вместо классов в случае простых интерфейсов 89
Рекомендация 24. Используйте полиморфизм @classmethod для конструирования объектов обобщенным способом 94
Рекомендация 25. Инициализация родительских классов с помощью встроенной функции super() 99
Рекомендация 26. Используйте множественное наследование лишь для примесных вспомогательных классов 104
Рекомендация 27. Предпочитайте общедоступные атрибуты закрытым 109
Рекомендация 28. Используйте наследование от классов из модуля collections.аbс для создания пользовательских контейнерных типов 114
Глава 4. Метаклассы и атрибуты
Рекомендация 29. Используйте простые атрибуты вместо методов get() и set() 119
Рекомендация 30. Старайтесь использовать декораторы @property вместо рефакторинга атрибутов 124
Рекомендация 31. Используйте дескрипторы для повторно используемых методов @рrореrtу 128
Рекомендация 32. Используйте методы _getatt r_(), _getatt ri bute_() и _setattr_() для отложенных атрибутов 134
Рекомендация 33. Верификация подклассов с помощью метаклассов 140
Рекомендация 34. Регистрируйте существование классов с помощью метаклассов 142
Рекомендация 35. Аннотирование атрибутов классов с помощью метаклассов 147
Глава 5. Одновременность и параллелизм
Рекомендация 36. Использование модуля sub pro cess для управления дочерними процессами 152
Рекомендация 37. Используйте потоки для блокирования операций ввода-вывода, но но для параллелизма 156
Рекомендация 38. Используйте класс Lock для предотвращения гонки данных в потоках 161
Рекомендация 39. Использование очередей для координации работы потоков 165
Рекомендация 40. Используйте сопрограммы для одновременного выполнения нескольких функций 173
Рекомендация 41. Старайтесь использовать модуль concurrent.futures для обеспечения истинного параллелизма 183
Глава 6. Встроенные модули 189
Рекомендация 42. Определяйте декораторы функций с помощью модуля functools.wraps 189
Рекомендация 43. Обеспечивайте возможность повторного использования блоков try/finally с помощью инструкций contextlib и with 192
Рекомендация 44. Повышайте надежность встроенного модуля pickle с помощью модуля copyreg 196
Рекомендация 45. Используйте модуль datetime вместо модуля time для локальных часов 202
Рекомендация 46. Используйте встроенные алгоритмы и структуры данных 206
Рекомендация 47. Используйте класс Decimal, когда на первый план выходит точность 211
Р екомендация 48. Знайте. где искать модули, разработанные сообществом Python 214
Глава 7. Совместная работа
Рекомендация 49. Снабжайте строками документирования каждую функцию, класс и модуль 217
Рекомендация 50. Используйте пакеты для организации модулей и предоставления стабильных API 222
Рекомендация 51. Изолируйте вызывающий код от API, определяя базовое исключение Exception 228
Рекомендация 52. Знайте, как устранять циклические зависимости 231
Рекомендация 53. Используйте виртуальные среды для изолированных и воспроизводимых зависимостей 237
Глава 8. Производство
Рекомендация 54. Используйте код с областью видимости модуля для конфигурирования сред развертывания 245
Рекомендация 55. Используйте строки repr для вывода отладочной информации 248
Рекомендация 56. Тестируйте любой код с помощью модуля un ittest 251
Рекомендация 57. Используйте интерактивную отладку с помощью пакета pdb 255
Рекомендация 58. Сначала - профилирование, затем -оптимизация 257
Рекомендация 59. Используйте модуль tracemalloc для контроля памяти и предотвращения ее утечки 262
Предметный указатель 267
Добавить комментарий