Что дальше ========== Добросовестный читатель, дочитавший книгу до сих пор, а также много практиковавшийся в написании программ, наверняка уже освоился с Python. И конечно, вы уже попробовали реализовать какие-нибудь собственные идеи на Python, чтобы потренироваться. Нет? Тогда стоит начать! Но в таком случае возникает вопрос: "Что же делать дальше?". Я предлагаю вам справиться со следующей задачей. .. admonition:: Задача Создайте собственную программу "Адресная книга", работающую из командной строки и позволяющую просматривать, добавлять, изменять, удалять или искать контактные данные ваших знакомых. Кроме того, эта информация также должна сохраняться на диске для последующего доступа. Это достаточно простая задача, если думать о ней в терминах, которые мы до сих пор проходили. Если же вы всё-таки нуждаетесь в подсказке, как действовать, вот она. .. admonition:: Подсказка (не читать!) Создайте класс для хранения персональных данных. Объекты визитных карточек храните в словаре, в котором имена контактов будут служить ключами. Для длительного хранения этих объектов на жёстком диске воспользуйтесь модулем pickle. Для добавления, изменения или удаления контактов применяйте встроенные методы словаря. Как только вы справитесь с этим, вы смело можете называться программистом на Python. А теперь немедленно `напишите мне письмо `_ ;-). Это не обязательный шаг, но весьма рекомендуемый. Также подумайте о `покупке бумажной версии книги `_, чтобы поддержать её дальнейшую разработку. Если эта задачка показалась вам слишком лёгкой, попробуйте ещё одну: .. admonition:: Задача Реализуйте команду `replace `_. Эта команда заменяет одну строку другой в списке переданных ей файлов. Команда ``replace`` может быть любой желаемой сложности: от простой замены строк до поиска по шаблону (регулярному выражению). А вот ещё некоторые возможные направления вашего дальнейшего путешествия по миру Python: .. Translators: Please feel free to add your language-specific links and URLs that can be helpful for your native language reader. Упражнения ---------- На Stack Overflow есть неплохое обсуждение `упражнений на Python, помогающих отточить ваше мастерство `_. Примеры программ ---------------- Лучший способ овладеть языком программирования -- это писать много программ и читать много программ: * `Проект PLEAC `_ * `Хранилище кода Rosetta `_ * `Примеры для Python на java2s `_ * `Книга рецептов Python `_ -- ценнейшая коллекция рецептов и подсказок, как решать те или иные проблемы при помощи Python. Обязательна к прочтению каждым программистом на Python. * `Модуль недели `_ -- ещё один замечательный путеводитель по :doc:`стандартной библиотеке Python `. Вопросы и ответы ---------------- * `Официальные "Можно и нельзя" в Python `_ * `Официальные ЧаВо Python `_ * `Список НеЧасто задаваемых Вопросов от Norvig `_ * `Вопросы и ответы из интервью о Python `_ * `Вопросы на StackOverflow с пометкой "python" `_ Советы и рекомендации --------------------- * `Трюки и уловки Python `_ * `Сколачиваем программы при помощи Python `_ * `Очаровательный Python `_ -- замечательная серия статей о Python Дэвида Мерца. Учебники -------- * `Всеобъемлющий список учебников по Python от Awaretek `_ Видео ----- * `PyVideo `_ Обсуждение ---------- Если вы застряли на какой-то проблеме в Python и не знаете, кого спросить, тогда `список рассылки python-tutor `_ подойдёт наилучшим образом. Тем не менее, сначала проделайте всю домашнюю работу и попытайтесь решить проблему самостоятельно. Новости ------- Если вас интересуют последние новости мира Python, отслеживайте их на официальной `планете Python `_. Установка библиотек ------------------- В `Каталоге пакетов Python `_ существует колоссальное количество открытых библиотек, которые вы можете использовать в своих программах. Для их установки можно воспользоваться `pip `_. Графические программы --------------------- Для создания собственной графической программы на Python понадобится какая-нибудь библиотека ГИП (графического интерфейса пользователя) со своими привязками к Python. Привязки позволяют писать программу на Python, используя библиотеки, которые сами по себе написаны на C, C++ или других языках. Выбор ГИП для Python достаточно обширен: * **Kivy** http://kivy.org * **PyGTK** Это привязки Python к инструментарию GTK+, на основе которого построен GNOME. У GTK+ есть много своих особенностей, но как только вы освоитесь, вы сможете создавать ГИП очень быстро. Что касается дизайнера графического интерфейса Glade, то он просто незаменим. Документация же всё ещё требует некоторых улучшений. GTK+ хорошо работает в GNU/Linux, но его порт на Windows пока не закончен. При помощи GTK+ можно создавать как свободные, так и проприетарные программы. Для начала прочитайте `Учебник по PyGTK `_. * **PyQt** Это привязки Python к инструментарию Qt, на основе которого построена KDE. Qt чрезвычайно прост в использовании, особенно благодаря Qt Designer и изумительной документации Qt. PyQt бесплатно, если используется для создания свободных программ (с лицензией GPL). Для создания закрытых проприетарных программ вам придётся его купить. Начиная с Qt 4.5, разрешается создавать при помощи него не только GPL'ные программы. Для начала прочитайте `краткое пособие по PyQt `_ или `Книгу PyQt `_. * **wxPython** Это привязки Python к инструментарию wxWidgets. wxPython не так прост в освоении, но зато он переносим и работает на GNU/Linux, Windows, Mac и даже на встраиваемых платформах. Многие среды разработки для wxPython, такие как `SPE (Stani's Python Editor) `_ и `wxGlade `_ включают дизайнеры графического интерфейса. При помощи wxPython можно создавать как свободные, так и проприетарные программы. Для начала прочитайте `учебник по wxPython `_. .. отсутствует в версии 2.0 ; TkInter : This is one of the oldest GUI toolkits in existence. If you have used IDLE, you have seen a TkInter program at work. It doesn't have one of the best look & feel because it has an old-school look to it. TkInter is portable and works on both Linux/Unix as well as Windows. Importantly, TkInter is part of the standard Python distribution. To get started, read the [http://www.pythonware.com/library/tkinter/introduction/ Tkinter tutorial]. ; Easygui : Easygui is one of the easiest gui-creators. It is based on the Tkinter toolkit and it uses a very simple and intuitive syntax. However, it is mainly for used for obtaining input from users and sending simple dialogs. More complex requirements might require a more powerful toolkit, but Easygui is still good for basic tasks. [http://www.ferg.org/easygui/]. Резюме по инструментам ГИП -------------------------- Другие варианты можно найти на `wiki-странице GuiProgramming официального сайта Python `_. К сожалению, не существует некоего единого стандартного инструмента для создания графических программ на Python. Я бы рекомендовал выбирать один из инструментов, описанных выше, наиболее подходящий для конкретной ситуации. Во-первых, определитесь, согласны ли вы платить за использование этого инструмента. Во-вторых, определитесь, на каких платформах должна работать ваша программа: только на Windows, на Mac и GNU/Linux или на всех сразу. И в-третьих, если вы выбрали платформу GNU/Linux, то в какой среде вы работаете: в KDE или GNOME. Для более подробного анализа см. страницу 26 `Статей о Python, Том 3, Выпуск 1 `_. Различные реализации -------------------- Язык программирования обычно состоит из двух частей: собственно языка и программного обеспечения. Язык -- это то, *как* мы что-либо пишем, а программное обеспечение -- это то, *что* запускает наши программы. До сих пор для выполнения наших программ мы использовали *CPython*. Он называется "CPython", потому что написан на языке C и является *Классическим интерпретатором Python*\ [1]_. Но существует и другое программное обеспечение, способное выполнять программы на Python: * `Jython `_ Реализация Python, работающая на платформе Java. Это означает, что можно использовать библиотеки и классы Java в программе на Python и наоборот. * `IronPython `_ Реализация Python, работающая на платформе .NET, что означает возможность использования библиотек и классов .NET в программах на Python и наоборот. * `PyPy `_ Реализация Python, написанная на Python! Это исследовательский проект, существующий для ускорения и облегчения разработки интерпретатора, поскольку сам интерпретатор написан на динамическом языке (в отличие от статических языков, как C, Java и C# в вышеупомянутых реализациях) * `Stackless Python `_ Реализация Python, специализирующаяся на высокой производительности многопоточных программ. Существуют и другие реализации, такие как `CLPython `_ -- написанная на Common Lisp и `IronMonkey `_ -- порт IronPython на JavaScript, что даёт возможность писать браузерные приложения ("Ajax") на Python вместо JavaScript. Каждая из перечисленных реализаций имеет свою область применения. Функциональное программирование (для хорошо подготовленных читателей) --------------------------------------------------------------------- Для написания больших программ определённо необходимо изучить функциональный подход к программированию, в отличие от объектно-ориентированного подхода, который мы проходили в :doc:`разделе "Объектно-ориентированное программирование" `: * `Практические советы по функциональному программированию, A.M. Kuchling `_ * `Глава "Функциональное программирование" книги "Dive Into Python" `_ * `Презентация "Функциональное программирование в Python" `_ Резюме ------ Вот мы и подошли к концу нашей книги, но как говорится, это только *начало конца*! Теперь вы заядлый программист на Python, и несомненно, готовы решать множество задач при помощи Python. Теперь вы можете начать автоматизировать на своём компьютере всё подряд, можете писать собственные игры и многое-многое другое. Так что вперёд! Примечания ---------- .. [1] **C**\ lassical **Python** interpreter (*прим.перев.*)