Авторизация
.
Контакты
.
Предложения
.
Начало
.
Автостопом по Python.
· · ·
Условные обозначения.
Часть I. Приступаем.
Глава 1. Выбираем интерпретатор.
Python 2 против Python 3.
Рекомендации.
То есть… Python 3?
Реализации.
CPython.
Stackless.
PyPy.
Jython.
IronPython.
PythonNet.
Skulpt.
MicroPython.
Глава 2. Правильная установка Python.
Установка Python на Mac OS X.
Setuptools и pip.
Virtualenv.
Установка Python на Linux.
Setuptools и pip.
Инструменты разработки.
Virtualenv.
Установка Python на Windows.
Setuptools и pip.
Virtualenv.
Коммерческие дистрибутивы Python.
Глава 3. Ваша среда разработки.
Текстовые редакторы.
Таблица 3.1. Первый взгляд на текстовые редакторы.
Sublime Text.
Vim.
Emacs.
TextMate.
Atom.
Code.
IDE.
Таблица 3.2. Первый взгляд на IDE.
PyCharm/IntelliJ IDEA.
Aptana Studio 3/Eclipse + LiClipse + PyDev.
WingIDE.
Spyder.
NINJA-IDE.
Komodo IDE.
Eric (the Eric Python IDE).
Visual Studio.
Улучшенные интерактивные инструменты.
IDLE.
IPython.
Bpython.
Инструменты изоляции.
Виртуальные среды.
Создание и активизация виртуальной среды.
Добавление библиотек в виртуальную среду.
Деактивизация виртуальной среды.
Pyenv.
Autoenv.
Virtualenvwrapper.
Buildout.
Conda.
Docker.
Часть II. Переходим к делу.
Глава 4. Пишем отличный код.
Стиль кода.
PEP 8.
PEP 20 (также известный как «Дзен Питона»).
Дзен Питона. Автор Тим Питерс.
Общие советы.
Явное лучше, чем неявное.
Разреженное лучше, чем плотное.
Ошибки никогда не должны замалчиваться/Если не замалчиваются явно.
Аргументы функций должны быть интуитивно понятными.
Никогда лучше, чем сейчас.
Если реализацию сложно объяснить — идея плоха.
Мы все — ответственные пользователи.
Возвращайте значения из одной точки.
Соглашения.
Альтернативы при проверке на равенство.
Получаем доступ к элементам массива.
Манипуляции со списками.
Продолжение длинной строки кода.
Идиомы.
Распаковка.
Игнорирование значения.
Создание списка длиной N, состоящего из одинаковых значений.
Контексты с гарантией безопасности по исключениям.
Распространенные подводные камни.
Изменяемые аргументы по умолчанию.
Замыкания с поздним связыванием.
Структурируем проект.
Модули.
Инструменты для пространств имен.
Таблица 4.1. Разные способы импортировать определения из модулей.
Структура — это главное.
Упаковка.
Объектно-ориентированное программирование.
Декораторы.
Динамическая типизация.
Таблица 4.2. Правила хорошего и плохого тона при задании имен.
Изменяемые и неизменяемые типы.
Таблица 4.3. Способы конкатенации строки.
Зависимости, получаемые от третьей стороны.
Тестирование вашего кода.
Советы по тестированию.
Основы тестирования.
Unittest.
Mock (в модуле unittest).
Doctest.
Примеры.
Пример: тестирование в Tablib.
Пример: тестирование с помощью Requests.
Другие популярные инструменты.
Pytest.
Nose.
Tox.
Варианты для старых версий Python.
Lettuce и Behave.
Документация.
Документация к проекту.
Публикация проекта.
Sphinx.
ReStructured Text.
Строки документации против блоковых комментариев.
Журналирование.
Журналирование против функции print.
Журналирование для библиотеки.
Журналирование для приложения.
Таблица 4.4. Способы конфигурирования средств ведения журнала.
Пример конфигурации с помощью файла в формате INI.
Пример конфигурирования с помощью словаря.
Пример конфигурирования непосредственно в коде.
Выбираем лицензию.
Лицензии.
Доступные варианты.
Таблица 4.5. Темы, рассматриваемые в популярных лицензиях.
Лицензирование ресурсов.
Глава 5. Читаем отличный код.
Типичные функции.
Таблица 5.1. Типичные функции рассматриваемых проектов.
HowDoI.
Читаем сценарий, состоящий из одного файла.
Читаем документацию к HowDoI.
Использование HowDoI.
Читаем код HowDoI.
Упаковка HowDoI.
Примеры из структуры HowDoI.
Пусть каждая функция делает что-то одно.
Пользуйтесь данными, доступными системе.
Примеры из стиля HowDoI.
Имена функций, которые начинаются с нижнего подчеркивания (мы все — ответственные пользователи).
Обрабатывайте вопросы совместимости только в одном месте (читаемость имеет значение).
Diamond.
Читаем более крупное приложение.
Читаем документацию к Diamond.
Используем Diamond.
Читаем код Diamond.
Журналирование в Diamond.
Примеры из структуры Diamond.
Разбиваем функциональность между пространствами имен (поскольку пространства имен — это отличная штука!).
Расширяемые пользователем классы (сложное лучше, чем запутанное).
Примеры из стиля Diamond.
Tablib.
Читаем небольшую библиотеку.
Читаем документацию Tablib.
Используем Tablib.
Читаем код библиотеки Tablib.
Документация к библиотеке Tablib в формате Sphinx.
Примеры из структуры Tablib.
Отсутствие ненужного объектно-ориентированного кода в форматах (использование пространств имен для группирующих функций).
Дескрипторы и декораторы свойств (используйте неизменяемость, когда это идет на пользу API).
Форматы файлов, зарегистрированные программно (не повторяйте дома).
Но мы все — ответственные пользователи.
Зависимости, полученные от третьей стороны, в пакетах (пример их использования).
Экономим память с помощью свойства __slots__ (оптимизируйте c осторожностью).
Примеры из стиля Tablib.
Requests.
Читаем более крупную библиотеку.
Читаем документацию библиотеки Requests.
Используем Requests.
Читаем код Requests.
Строки документации Requests, совместимые со Sphinx.
Примеры из структуры Requests.
Высокоуровневый API (очевидный способ решить задачу, желательно единственный).
Объекты класса Request и PreparedRequest (мы все — ответственные пользователи).
Примеры из стиля Requests.
Множества и их арифметика (отличная питонская идиома).
Коды состояний (читаемость имеет значение).
Werkzeug.
Читаем код инструментария.
Читаем документацию Werkzeug.
Используем Werkzeug.
Читаем код Werkzeug.
Tox в Werkzeug.
Примеры стиля из Werkzeug.
Элегантный способ угадать тип (если реализацию легко объяснить — идея, возможно, хороша).
Регулярные выражения (читаемость имеет значение).
Примеры структуры из Werkzeug.
Декораторы, основанные на классах (питонский способ использовать динамическую типизацию).
Response.__call__
Примеси (еще одна отличная штука).
Новые классы и object.
Flask.
Читаем код фреймворка.
Читаем документацию Flask.
Использование Flask.
Читаем код Flask.
Журналирование во Flask.
Примеры стиля из Flask.
Примеры структуры из Flask.
Разумные значения по умолчанию могут быть важны.
Глава 6. Отправляем отличный код.
Использование словаря и Concepts.
Упаковываем код.
«Пакет» против «пакета дистрибутива» и против «пакета установки».
Conda.
PyPI.
Используйте testPyPI для тестирования и PyPI для реальной разработки.
Пример проекта.
Используйте pip, но не easy_install.
Личный PyPI.
Pypiserver.
PyPI, размещенный на S3.
Поддержка VCS для pip.
Замораживаем код.
Проверяем лицензии при использовании библиотек, написанных на C.
Таблица 6.1. Инструменты для заморозки.
PyInstaller.
Cx_Freeze.
Py2app.
Py2exe.
BbFreeze.
Упаковка дистрибутивов в Linux.
Подводные камни при создании пакетов дистрибутивов в Linux.
Исполняемые ZIP-файлы.
Часть III. Руководство по сценариям.
Глава 7. Взаимодействие с пользователем.
Jupyter Notebook.
Приложения командной строки.
Таблица 7.1. Инструменты для командной строки.
Argparse.
Docopt.
Plac.
Click.
Clint.
Cliff.
Приложения с графическим интерфейсом.
Библиотеки виджетов.
Таблица 7.2. Библиотеки виджетов для графических интерфейсов.
Kivy.
GTK+
WxWidgets.
Objective-C.
Разработка игр.
Веб-приложения.
Веб-фреймворки/микрофреймворки.
Таблица 7.3. Веб-фреймворки.
Django.
Flask.
Tornado.
Pyramid.
Движки для веб-шаблонов.
Таблица 7.4. Движки шаблонов.
Jinja2.
Chameleon.
Mako.
Развертывание веб-приложений.
Хостинг.
Веб-серверы.
Серверы WSGI.
Глава 8. Управление кодом и его улучшение.
Непрерывная интеграция.
Системное администрирование.
Travis-CI.
Jenkins.
Buildbot.
Автоматизация сервера.
Salt.
Ansible.
Puppet.
Chef.
CFEngine.
Наблюдение за системами и задачами.
Psutil.
Fabric.
Luigi.
Скорость.
Таблица 8.1. Способы ускорения работы.
Многопоточность.
Модуль multiprocessing.
Subprocess.
PyPy.
Cython.
Numba.
Библиотеки для работы с GPU.
Взаимодействие с библиотеками, написанными на C/C++/FORTRAN.
Таблица 8.2. Интерфейсы С и С++
C Foreign Function Interface.
Ctypes.
F2PY.
SWIG.
Boost.Python.
Глава 9. Программные интерфейсы.
Веб-клиенты.
API для сети.
Simplejson для ранних версий Python.
Анализ XML.
Скраппинг сайтов.
lxml.
Сериализация данных.
Pickle.
Межъязыковая сериализация.
Сжатие.
Протокол буфера.
Распределенные системы.
Работа с сетью.
Таблица 9.1. Работа с сетью.
Производительность сетевых инструментов из стандартной библиотеки Python.
Gevent.
Twisted.
PyZMQ.
RabbitMQ.
Шифрование.
Таблица 9.2. Реализация шифрования.
Ssl, hashlib и secrets.
PyOpenSSL.
PyNaCl и libnacl.
Cryptography.
PyCrypto.
Bcrypt.
Глава 10. Манипуляции с данными.
Таблица 10.1. Инструменты для работы с данными.
Научные приложения.
IPython.
NumPy.
SciPy.
Matplotlib.
Pandas.
Scikit-Learn.
Rpy2.
Decimal, fractions и numbers.
SymPy.
Манипуляции с текстом и его анализ.
Инструменты для работы со строками стандартной библиотеки Python.
Nltk.
SyntaxNet.
Работа с изображениями.
Pillow.
Cv2.
Scikit-Image.
Глава 11. Хранение данных.
Структурированные файлы.
Библиотеки для работы с базами данных.
Таблица 11.1. Библиотеки для работы с базами данных.
Sqlite3.
SQLAlchemy.
Django ORM.
Peewee.
PonyORM.
SQLObject.
Records.
Библиотеки для работы с базами данных NoSQL.
Приложение. Дополнительная информация.
Сообщество Python.
BDFL.
Python Software Foundation.
PEP.
Конференции Python.
Notable-протоколы.
Отправка PEP.
Пользовательские группы Python.
Обучение Python.
Для начинающих.
Средний уровень.
Продвинутый уровень.
Для инженеров и ученых.
Дополнительные темы.
Справочный материал.
Документация.
Новости.
Об авторах.
Благодарности.
Примечания.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.