В глобальное сообщество пользователей Python входит немало доброжелательных людей.
Гвидо ван Россума (Guido van Rossum), создателя Python, зачастую называют BDFL (Benevolent Dictator for Life — великодушный пожизненный диктатор).
Миссия Python Software Foundation (PSF) — продвигать, защищать и развивать язык программирования Python, а также поддерживать и способствовать росту международного сообщества программистов Python. Для того чтобы узнать больше, обратитесь к основной странице PSF http://www.python.org/psf/.
PEP расшифровывается как Python Enhancement Proposal (предложение по улучшению Python). В таких протоколах описываются изменения в самом Python, а также в его стандартах. Те, кому интересно изучать историю Python или сам проект языка, найдут эти протоколы довольно любопытными (даже те из них, которые в итоге были отклонены). Существует три разновидности протоколов, они определены в PEP 1 (https://www.python.org/dev/peps/pep-0001).
• Стандарты. Описывают новую функциональность или реализацию.
• Информационные протоколы. Описывают проблемы проектов, общие положения или содержат информацию, полезную для сообщества.
• Процессы. Подобные протоколы описывают процессы, связанные с Python.
Крупными событиями в жизни сообщества Python являются конференции разработчиков. Две наиболее заметные — PyCon (проводится в США) и EuroPython (проводится в Европе). Полный список конференций см. по ссылке http://www.pycon.org/.
Существует несколько обязательных к прочтению протоколов.
• PEP 8 — руководство по стилю для кода Python (https://www.python.org/dev/peps/pep-0008). Прочтите его полностью. И следуйте ему. Инструмент pep8 вам поможет (https://pypi.python.org/pypi/pep8).
• PEP 20 — «Дзен Питона» (https://www.python.org/dev/peps/pep-0020). PEP 20 представляет собой список из 19 утверждений, которые кратко описывают философию, лежащую в основе Python.
• PEP 257 — соглашения для строк документации (https://www.python.org/dev/peps/pep-0257). PEP 257 содержит руководство по семантике и соглашения, связанные со строками документации.
По адресу http://www.python.org/dev/peps/ вы можете узнать еще больше.
Новые протоколы будет рассматривать сообщество — и после обширных дискуссий они будут приняты или отклонены. На рис. A.1 показано, что происходит, когда кто-то отправляет черновую версию протокола.
Рис. A.1. Обзор процесса рассмотрения протокола
Пользовательские группы — это места, где разработчики Python встречаются лично для того, чтобы выступить с докладом или поговорить об интересующих их аспектах Python. Список локальных пользовательских групп см. в «Википедии»: http://wiki.python.org/moin/LocalUserGroups.
Рассмотрим справочные материалы, сгруппированные по уровню сложности и областям применения.
• The Python Tutorial. Официальное руководство по Python (http://docs.python.org/tutorial/index.html). Рассматриваются все основы, предлагается «экскурсия» по языку и стандартной библиотеке. Рекомендуется для тех, кому нужно руководство по языку для быстрого старта.
• Python for Beginners. Руководство (http://thepythonguru.com/) предназначено для начинающих программистов. Подробно рассматриваются многие концепции Python. Вы научитесь продвинутым конструкциям Python вроде лямбда-выражений и регулярных выражений. Руководство заканчивается статьей How to access a MySQL db using Python («Как получить доступ к базе данных MySQL с помощью Python»).
• Learn Python. Это интерактивное руководство (http://www.learnpython.org/) — легкий способ познакомиться с Python. Использует подход, реализованный на популярном сайте Try Ruby, — этот ресурс представляет собой интерактивный интерпретатор Python, встроенный в сайт, что позволяет пройти все уроки, не устанавливая Python на своем компьютере.
• Python for You and Me. Эта книга (http://pymbook.readthedocs.org/) — отличный ресурс для изучения всех аспектов языка; подходит для всех, кто предпочитает учиться по традиционной книге, а не по руководству.
• Online Python Tutor. Сайт http://pythontutor.com/ предлагает визуальное пошаговое представление того, как работает ваша программа. Python Tutor помогает пользователям преодолеть фундаментальный барьер, мешающий изучению программирования, показывая, что происходит, когда компьютер выполняет каждую строку исходного кода.
• Invent Your Own Computer Games with Python. Книга (http://inventwithpython.com/) предназначена для тех, у кого нет опыта программирования. Каждая глава содержит исходный код игры, и эти примеры программ используются для демонстрации концепций программирования, что помогает читателю понять, как программы «выглядят».
• Hacking Secret Ciphers with Python. Книга (http://inventwithpython.com/hacking/) помогает новичкам освоить программирование на языке Python и шифрование. Содержит исходные коды разнообразных шифров, а также программы, которые могут их взломать.
• Learn Python the Hard Way. Отличное руководство по Python для начинающих (http://learnpythonthehardway.org/book/). Рассматриваются многочисленные темы — от создания консольного приложения hello world до работы с Сетью.
• Crash into Python. Сайт http://stephensugden.com/crash_into_python/, также известный как Python for Programmers with 3 Hours, предлагает разработчикам, имеющим опыт работы с другими языками, экспресс-курс по Python.
• Dive Into Python 3. Эта книга (http://www.diveintopython3.net/) подходит для тех, кто готов окунуться в работу с Python 3. Она пригодится, если вы переходите с Python 2 на Python 3 или если у вас уже есть опыт программирования на других языках.
• Think Python: How to Think Like a Computer Scientist. Эта книга (http://greenteapress.com/thinkpython/html/index.html) пытается дать введение в основные концепции информатики с помощью языка Python. Идея создания этой книги заключается в том, чтобы предоставить книгу, содержащую множество упражнений, минимальное количество жаргонных выражений, а также раздел, посвященный отладке, в каждой главе. В ней рассматривается различная функциональность, доступная в Python, а также разные шаблоны проектирования и приемы хорошего тона.
Книга также включает несколько примеров, позволяющих читателю исследовать темы, рассмотренные в книге, более подробно, применив их к примерам из реального мира. Среди примеров вы можете найти разработку графического пользовательского интерфейса и Markov Analysis.
• Python Koans. Это онлайн-руководство (http://bitbucket.org/gregmalcolm/python_koans) является версией для Python популярного инструмента Ruby Koans от Edgecase. Интерактивное руководство работает в командной строке, позволяет освоить базовые концепции Python с помощью тестов (http://en.wikipedia.org/wiki/Test-driven_development): путем исправления операторов контроля, которые дают сбой в тестовом сценарии, студенты последовательно продвигаются в освоении Python.
Для тех, кто уже работал с языками программирования и разгадывал загадки самостоятельно, этот ресурс может показаться привлекательным. Новичкам в программировании может понадобиться еще один обучающий ресурс.
• A Byte of Python. Бесплатная вводная книга, которая обучает Python новичков (авторы подразумевают, что у читателей нет опыта программирования). Существуют отдельные версии для Python 2.x (http://www.ibiblio.org/swaroopch/byteofpython/read/) и для Python 3.x (http://swaroopch.com/notes/Python_en-Preface/)
• Learn to Program in Python with Codecademy. Этот курс Codecademy (http://www.codecademy.com/en/tracks/python) предназначен для тех, кто раньше не работал с Python. Этот бесплатный интерактивный курс обучает основам (и выше) программирования на Python, при этом проверяя знания ученика по мере его продвижения по руководствам. В нем предоставляется встроенный интерпретатор, предназначенный для мгновенного получения обратной связи о вашей работе.
Effective Python. В книге (http://www.effectivepython.com/) приводятся 59 способов повысить навык создания питонского кода. На 227 страницах представлен краткий обзор наиболее распространенных адаптаций, которые нужно выполнить для того, чтобы стать эффективным программистом Python среднего уровня.
• Pro Python. Книга (http://amzn.com/1430227575) предназначена для программистов Python среднего и продвинутого уровня, которые хотят понять, почему Python работает именно так, а не иначе, и как они могут перейти на новый уровень.
• Expert Python Programming. В этой книге (http://www.packtpub.com/expert-python-programming/book) показываются лучшие приемы программирования для Python. Она предназначена для более продвинутых пользователей. Книга начинается с тем вроде декораторов (в качестве примеров приводятся реализация кэша, прокси и менеджера контекста), порядка разрешения методов, использования метода super() и метапрограммирования, а также с приемов хорошего тона, описанных в PEP 8.
В книге содержится подробный пример написания и выпуска пакета, который в итоге становится приложением, а также глава, посвященная использованию zc.buildout. Описываются правила хорошего тона вроде написания документации, разработки через тестирование, контроля версий, оптимизации и профилирования.
• A Guide to Python’s Magic Methods. Этот полезный ресурс (http://www.rafekettler.com/magicmethods.html) представляет собой коллекцию статей Рафе Кеттлера (Rafe Kettler), в которых объясняются «волшебные методы» Python. Они окружены двойными нижними подчеркиваниями (например, __init__) и могут заставлять классы и объекты вести себя «волшебным» образом.
• Effective Computation in Physics. Этот справочник Энтони Скопаца (Anthony Scopatz) и Кэтрин Д. Хафф (Kathryn D. Huff) (http://bit.ly/effective-computation-in-physics) предназначен для аспирантов, начинающих использовать Python в области науки или инженерии. Включает в себя фрагменты кода, выполняющие поиск в файлах с помощью SED и AWK, а также содержит советы о том, как выполнить каждый шаг в цепи исследований — от сбора данных и анализа до публикации.
• A Primer on Scientific Programming with Python. В этой книге (http://bit.ly/primer-sci-pro-py) Ханса Петтера Лангтангена (Hans Petter Langtangen) в основном рассматривается использование Python для науки. Примеры подобраны из области математики и физики.
• Numerical Methods in Engineering with Python. В этой книге (http://bit.ly/numerical-methods-eng-py) Яна Куисалааса (Jaan Kiusalaas) делается акцент на современных численных методах и их реализации в Python.
• Annotated Algorithms in Python: with Applications in Physics, Biology, and Finance. Эта книга (http://amzn.com/0991160401) Массимо Ди Пьерро (Massimo Di Pierro) является инструментом обучения, предназначенным для демонстрации использованных алгоритмов, которые реализуются наиболее прямолинейным образом.
• Problem Solving with Algorithms and Data Structures. В этой книге (http://www.interactivepython.org/courselib/static/pythonds/index.html) рассматривается набор структур данных и алгоритмов. Все представленные концепции подкреплены кодом Python и интерактивными фрагментами кода, которые вы можете запустить непосредственно из браузера.
• Programming Collective Intelligence. В этой книге (http://bit.ly/programming-collective-intelligence) приводится большое количество основных методов машинного обучения и дата майнинга. В ней допускаются некоторые вольности в том, что касается математической нотации. Она предназначена для того, чтобы объяснить логику, лежащую в основе этих методов, и показать способы реализации алгоритмов в Python.
• Transforming Code into Beautiful, Idiomatic Python. Видеоролик Реймонда Хеттингера (Raymond Hettinger) (http://bit.ly/hettinger-presentation) продемонстрирует, как наиболее эффективно использовать функциональность Python и улучшить код с помощью нескольких трансформаций: «Когда вы видите это, сделайте то».
• Fullstack Python. Сайт https://www.fullstackpython.com/ представляет собой полноценный ресурс, посвященный веб-разработке с помощью Python. Рассматривается широкий диапазон вопросов — от настройки веб-сервера до разработки фронтенда, а также выбор базы данных, оптимизация/масштабирование и многое другое. Из его названия следует, что на сайте вы можете узнать все, что нужно сделать, чтобы написать веб-приложение с нуля.
• Python in a Nutshell. В этой книге (http://bit.ly/python-in-a-nutshell) рассматривается множество вопросов, связанных с кросс-платформенным использованием Python (от синтаксиса до встроенных библиотек), а также продвинутые темы вроде написания расширений на C.
• The Python Language Reference. Справочник по Python, доступный онлайн (http://docs.python.org/reference/index.html), в котором рассматриваются синтаксис и основы семантики языка.
• Python Essential Reference. Эта книга (http://www.dabeaz.com/per.html), написанная Дэвидом Бизли (David Beazley), представляет собой справочник по Python. В ней кратко объясняются основы языка и главные части стандартной библиотеки. В книге рассматриваются Python 3 и Python 2.6.
• Python Pocket Reference. Эта книга (http://bit.ly/python-pocket-reference), написанная Марком Лутцем (Mark Lutz), является простым справочником по основам языка, содержит описание наиболее часто используемых модулей и тулкитов. В книге рассматриваются Python 3 и Python 2.6.
• Python Cookbook. Эта книга (http://bit.ly/python-cookbook-3e), написанная Дэвидом Бизли (David Beazley) и Брайаном К. Джонсом (Brian K. Jones), содержит рецепты для разработчиков Python. В ней рассматриваются основы языка, а также задачи, которые приходится решать для многих прикладных областей.
• Writing Idiomatic Python. Книга написана Джеффом Наппом (Jeff Knupp), содержит наиболее популярные и важные идиомы Python. Каждая идиома представлена в виде рекомендации использовать какой-нибудь распространенный фрагмент кода, за которой следует объяснение, почему эта идиома так важна. В книге также содержатся два фрагмента кода для каждой идиомы — «вредный» способ писать код и «идиоматический». Для Python 2.7.3+ (http://amzn.com/1482372177) и для Python 3.3+ (https://amzn.com/B00B5VXMRG) изданы разные версии книги.