Изучаем Python Эрик Метиз. Crash course2 n d e d i t i o na h a n d s o n, p r o j e c t b a s e d i n t r o d u c t i o n t o p r o g r a m m i n g
Скачать 6.19 Mb.
|
497 даже имеется специальный термин для таких ситуаций: это называется «от- ладкой с резиновой уткой». Если вы четко объясните свою ситуацию резиновой утке (или любому другому неодушевленному объекту) и зададите конкретный вопрос, часто вы сможете ответить на него. Некоторые организации даже заводят настоящую резиновую утку, чтобы подтолкнуть своих программистов к «разго- ворам с уткой». Попробуйте заново Просто вернитесь к началу и попробуйте еще раз; часто этого оказывается доста- точно для решения многих проблем. Допустим, вы пытаетесь написать цикл for на основе примера из книги. Возможно, вы пропустили что-то совсем простое — скажем, двоеточие в конце строки. Выполнение всех действий заново поможет избежать повторения ошибки. Сделайте перерыв Если вы уже долго бьетесь над какой-то проблемой, перерыв — едва ли не лучшее, что можно сделать. Когда мы трудимся над одной задачей в течение долгого вре- мени, наш мозг начинает концентрироваться на единственном решении. Мы за- бываем о сделанных предположениях, а перерыв помогает взглянуть на проблему под новым углом. Перерыв даже не обязан быть долгим, просто нужно заняться чем-то, что выведет вас из текущего мысленного настроя. Если вы давно сидите на одном месте, переключитесь на какую-нибудь физическую нагрузку: походите или выйдите на улицу; может, стоит выпить стакан воды или съесть что-нибудь легкое и здоровое. Если вы начинаете отчаиваться, попробуйте отложить работу на следующий день. Хороший сон почти всегда упрощает решение задачи. Обратитесь к ресурсам этой книги В список сетевых ресурсов этой книги ( https://www .nostarch .com/pythoncrashcourse2e/ ) включен ряд полезных разделов, посвященных настройке системы и обзорам каж- дой главы. Просмотрите эти ресурсы — возможно, вы найдете в них то, что вам поможет. Поиск в интернете Вполне вероятно, что кто-то уже столкнулся с такой же проблемой и написал о ней в интернете. Хорошие навыки поиска и конкретные запросы помогут вам найти информацию для решения ваших проблем. Например, если у вас возникли трудности с установкой Python в Windows 10, поиск по условию python windows 10 может привести вас к ответу. 498 Приложение В • Помощь и поддержка Поиск по точным сообщениям об ошибках тоже может оказаться исключительно полезным. Допустим, при попытке запуска терминального сеанса Python произо- шла следующая ошибка: > python 'python' is not recognized as an internal or external command, operable program or batch file. > Вероятно, поиск по полному тексту сообщения принесет полезную информацию. В результатах поиска, связанного с программированием, особенно часто встреча- ются некоторые сайты. Я опишу некоторые из них, чтобы вы знали, чего от них можно ждать. Stack Overflow Stack Overlow ( http://stackoverlow .com/ ), один из самых популярных сайтов с вопро- сами и ответами для программистов, часто встречается на первой странице резуль- татов поиска, связанного с Python. Пользователи публикуют вопросы по возник- шим проблемам, а другие участники пытаются дать полезные ответы. Пользователи могут голосовать за ответы, которые, по их мнению, принесли наибольшую пользу, так что лучшими ответами обычно оказываются первые из найденных. На сайте Stack Overflow можно найти ответы на многие основные вопросы по язы- ку Python, потому что со временем они были хорошо проработаны. Пользователи также публикуют обновления, так что ответы остаются относительно актуальными. На момент написания книги на сайте Stack Overflow были опубликованы ответы более чем на 1 000 000 вопросов, связанных с Python. Официальная документация Python Официальная документация Python ( http://docs .python .org/ ) уже не столь бесспорно полезна для новичков, потому что она написана для документирования языка, а не для разъяснений. Примеры в официальной документации должны работать, но возможно, что-то в них останется для вас непонятным. Тем не менее это полезный ресурс, к которому стоит обращаться при поиске, а по мере углубления вашего по- нимания Python он будет приносить еще больше пользы. Официальная документация библиотек Если вы используете конкретную библиотеку (например, Pygame, Matplotlib, Django и т. д.), в поиске часто будут встречаться ссылки на официальную доку- ментацию этого проекта — например, документация http://docs .djangoproject .com/ чрезвычайно полезна. Если вы собираетесь работать с любыми из этих библиотек, стоит ознакомиться с официальной документацией. IRC (Internet Relay Chat) 499 r/learnpython Форум Reddit состоит из ряда подфорумов (subreddits). Подфорум r/learnpython ( http://reddit .com/r/learnpython/ ) достаточно активен и благожелательно настроен. Здесь вы сможете прочитать вопросы других участников и опубликовать свои собственные. Сообщения в блогах Многие программисты ведут блоги и пишут об аспектах языка, с которыми они работают. Прежде чем брать на вооружение любой совет, просмотрите несколько первых комментариев к сообщению в блоге. Если комментариев нет, к сообщению следует относиться скептически. Вполне возможно, что никто другой не смог убе- диться в полезности этого совета. IRC (Internet Relay Chat) Программисты общаются в реальном времени на каналах IRC. Если вы зашли в тупик, а поиск в интернете не принес результатов, обращение на канал IRC может оказаться лучшим вариантом. Многие люди, проводящие время на этих каналах, вежливы и доброжелательны, особенно если вы можете точно описать, что пытае- тесь сделать, что уже было сделано и какие результаты вы получили. Создание учетной записи IRC Чтобы создать учетную запись на IRC, зайдите на сайт http://webchat .freenode .net/ Выберите имя пользователя, заполните поле c кодом проверки (captcha) и щелкни- те на кнопке Connect . Появляется сообщение, приветствующее вас на сервере IRC freenode. В поле в нижней части окна введите следующую команду: /msg nickserv register пароль адрес_электронной_почты Введите свой пароль и адрес электронной почты. Выберите простой пароль, кото- рый не используется для других учетных записей. На ваш адрес электронной почты придет сообщение с инструкцией по подтверждению учетной записи. В нем будет содержаться команда следующего вида: /msg nickserv verify register имя код_проверки Скопируйте эту строку на сайт IRC с именем, которое вы выбрали ранее, и полу- ченным кодом проверки. Теперь все готово для присоединения к каналу. Если в какой-то момент у вас возникнут трудности со входом под вашей учетной записью, попробуйте ввести следующую команду: /msg nickserv identify имя пароль 500 Приложение В • Помощь и поддержка Замените имя и пароль своими данными. После прохождения аутентификации в Сети вы сможете обратиться к каналу, требующему проверенного имени поль- зователя. Выбор канала Чтобы присоединиться к основному каналу Python, введите команду /join #python На экране появляется подтверждение о том, что вы присоединились к каналу, а также общая информация о канале. Канал ##learnpython (с двумя символами # ) обычно тоже активно работает. Этот канал связан с http://reddit .com/r/learnpython/ , поэтому вы также будете видеть здесь информацию о сообщениях на r/learnpython . Если вы работаете над веб- приложениями, также можно присоединиться к каналу #django После присоединения к каналу вы сможете читать сообщения других пользовате- лей, а также задавать вопросы. Культура IRC Чтобы помощь была эффективной, необходимо кое-что знать о культуре IRC. Если вы сосредоточитесь на трех вопросах, приведенных в начале приложения, это опре- деленно станет значительным шагом на пути к успешному решению. Люди охотно помогут вам, если вы сможете точно объяснить, что вы пытаетесь сделать, что уже пробовали сделать и какие именно результаты при этом получили. Если вам нужно поделиться кодом или выходными данными, участники IRC используют внешние сайты, предназначенные для этой цели (например, https://bpaste .net/+python/ ). Тем самым предотвращается загромождение канала кодом и упрощается чтение опу- бликованного кода. Терпение всегда повышает вероятность успеха. Четко сформулируйте свой вопрос и подождите ответа. Часто пользователи участвуют сразу в нескольких беседах, но скорее всего, кто-нибудь откликнется на вашу просьбу в разумные сроки. При не- большом количестве участников на получение ответа может потребоваться больше времени. Slack Slack — современное переосмысление технологии IRC. Каналы Slack часто ис- пользуются для внутреннего общения в компаниях, но также существует много открытых групп, к которым вы можете присоединиться. Если вы захотите про- смотреть Slack-группы Python, начните с https://pyslackers .com/ . Чтобы получить приглашение, щелкните на ссылке Slack в верхней части страницы и введите свой адрес электронной почты. Discord 501 Оказавшись в рабочем пространстве Python Developers, вы увидите список каналов. Щелкните на ссылке Channels и выберите тему, которая вас интересует. Возможно, вам стоит начать с каналов #learning_python и #django channels Discord Discord — еще одна чат-среда с сообществом Python, в которой можно попросить о помощи и читать обсуждения, связанные с Python. Чтобы поближе познакомиться с Discord, откройте страницу https://pythondiscord .com/ и щелкните на ссылке Chat Now . На экране должно появиться окно с автоматически сгенерированным приглашением; щелкните на ссылке Accept Invite . Если у вас уже имеется учетная запись Discord, вы можете выполнить вход с данными своей учет- ной записи. Если же учетной записи еще нет, введите имя пользователя и следуйте инструкциям для завершения процесса регистрации. Если вы впервые посещаете Python-площадку Discord, то для полноценного уча- стия необходимо принять правила сообщества. Когда это будет сделано, вы сможете присоединиться к любому из интересующих вас каналов. Если вам потребуется помощь, отправьте свой вопрос на один из каналов Python Help. Г Git и контроль версий Программы контроля версий позволяют создать «моментальный снимок» состо- яния программы, находящейся в рабочем состоянии. При внесении изменений в проект (например, при реализации новой возможности) существует возможность возврата к предыдущему работоспособному состоянию, если в новом состоянии проект работает не так, как ожидалось. Благодаря программам контроля версий программист может работать над усовер- шенствованием и совершать ошибки, не опасаясь нарушить работоспособность проекта. Это особенно важно в больших проектах, но также может быть полезно и в меньших проектах — даже для программ, содержащихся в одном файле. В этом приложении вы узнаете, как установить Git и использовать эту систему для управления версиями программ, над которыми вы работаете. В настоящее время Git является самой популярной программой контроля версий. Многие рас- ширенные возможности Git предназначены для групп, совместно работающих над большими проектами, но базовые функции также хорошо подходят для раз- работчиков-одиночек. Контроль версий в Git основан на отслеживании изменений, вносимых в каждый файл проекта; если вы совершите ошибку, то сможете просто вернуться к ранее сохраненному состоянию. Установка Git Git работает во всех операционных системах, но способы установки в конкретных системах различаются. Ниже приведены инструкции для каждой операционной системы. Установка Git в Windows Программу установки Git можно загрузить по адресу https://git-scm .com/ . Найдите ссылку для загрузки программы установки, соответствующей вашей системе. Установка Git в macOS Возможно, программа Git уже установлена в вашей системе; попробуйте ввести команду git --version . Если в выводе будет указан конкретный номер версии, Git Игнорирование файлов 503 устанавливается в вашей системе. Если в сообщении будет предложено установить или обновить Git, просто выполните инструкции на экране. Также есть другой способ: зайдите на сайт https://git-scm .com/ и выберите подходя- щую программу установки для вашей системы. Установка Git в Linux Чтобы установить Git в Linux, введите следующую команду: $ sudo apt install git-all Все, теперь вы можете использовать Git в своих проектах. Настройка Git Git следит за тем, кто вносит изменения в проект, даже если над проектом работает всего один человек. Для этого Git необходимо знать ваше имя пользователя и па- роль. Имя пользователя должно быть указано обязательно, но ничто не мешает вам ввести фиктивный адрес электронной почты: $ git config --global user.name "имя_пользователя" $ git config --global user.email "username@example.com" Если вы забудете это сделать, Git запросит информацию при первом закреплении. Создание проекта Для начала создадим проект для работы. Создайте в системе папку с именем git_practice . В этой папке разместите файл с простой программой Python: hello_git.py print("Hello Git world!") Эта программа поможет нам изучить базовую функциональность Git. Игнорирование файлов Файлы с расширением .pyc автоматически строятся на основе файлов .py , и отсле- живать их в Git не нужно. Эти файлы хранятся в каталоге с именем __pycache__ Чтобы приказать Git игнорировать этот каталог, создайте специальный файл с именем .gitignore (с точкой в начале имени и без расширения) и включите в него следующую строку: .gitignore __pycache__/ 504 Приложение Г • Git и контроль версий В результате Git будет игнорировать любые файлы, находящиеся в каталоге __pycache__ . Файл .gitignore избавляет проект от излишнего «балласта» и упрощает работу с ним. Возможно, для открытия файла .gitignore вам придется изменить настройки своего текстового редактора, чтобы в нем отображались скрытые файлы. Некоторые ре- дакторы настроены на игнорирование имен файлов, начинающихся с точки. Инициализация репозитория Теперь, когда у вас имеется каталог с файлом Python и файлом .gitignore , можно переходить к инициализации репозитория Git. Откройте терминал, перейдите в каталог git_practice и выполните следующую команду: git_practice$ git init Initialized empty Git repository in git_practice/.git/ git_practice$ Из выходных данных видно, что Git инициализирует пустой репозиторий в ка- талоге git_practice . Репозиторий представляет собой набор файлов программы, который активно отслеживается системой Git. Все файлы, используемые Git для управления репозиторием, хранятся в скрытом каталоге .git/ , с которым вам вообще не придется работать. Просто не удаляйте этот каталог, иначе вся история проекта будет потеряна. Проверка статуса Прежде чем делать что-либо, проверьте статус проекта: git_practice$ git status ❶ On branch master No commits yet ❷ Untracked files: (use "git add .gitignore hello_world.py ❸ nothing added to commit but untracked files present (use "git add" to track) git_practice$ В Git ветвью (branch) называется версия проекта, над которым вы работаете; из вывода видно, что текущей является ветвь с именем master . Каждый раз, когда вы проверяете статус своего проекта, программа должна сообщать, что текущей является ветвь master . После этого мы видим, что система готова к исходному за- Закрепление 505 креплению. Закреплением (commit) называется «моментальный снимок» проекта на определенный момент времени. Git сообщает, что в проекте имеются неотслеживаемые файлы , потому что мы еще не сообщили Git, какие файлы должны отслеживаться. Затем мы узнаем, что в текущее закрепление еще ничего не добавлено, но существуют неотслеживаемые файлы, которые следует добавить в репозиторий . Добавление файлов в репозиторий Добавим в репозиторий два файла и снова проверим статус: ❶ git_practice$ git add . ❷ git_practice$ git status On branch master No commits yet Changes to be committed: (use "git rm --cached ❸ new file: .gitignore new file: hello_git.py git_practice$ Команда git add добавляет в репозиторий все файлы проекта, которые еще не от- слеживаются . Закрепление при этом не выполняется; команда просто сообщает Git, что эти файлы нужно отслеживать. При проверке статуса проекта мы видим, что Git находит изменения, которые необходимо закрепить . Метка new file оз- начает, что эти файлы были только что добавлены в репозиторий . Закрепление Выполним первое закрепление: ❶ git_practice$ git commit -m "Started project." ❷ [master (root-commit) ee76419] Started project. ❸ 2 files changed, 4 insertions(+) create mode 100644 .gitignore create mode 100644 hello_git.py ❹ git_practice$ git status On branch master nothing to commit, working tree clean git_practice$ Команда git commit -m " сообщение " создает «моментальный снимок» состояния проекта. Флаг -m приказывает Git сохранить следующее сообщение ( "Started project." ) в журнале проекта. Из вывода следует, что текущей является ветвь master , а в проекте изменились два файла . 506 Приложение Г • Git и контроль версий Проверка статуса показывает, что текущей является ветвь master , а рабочий каталог чист . Это сообщение должно выводиться каждый раз, когда вы закрепляете ра- бочее состояние своего проекта. Если вы получите другое сообщение, внимательно прочитайте его; скорее всего, вы забыли добавить файл после закрепления. Просмотр журнала Git ведет журнал всех закреплений, выполненных в проекте. Проверим содержимое журнала: git_practice$ git log commit a9d74d87f1aa3b8f5b2688cb586eac1a908cfc7f (HEAD -> master) Author: Eric Matthes Date: Mon Jan 21 21:24:28 2019 -0900 Started project. git_practice$ Каждый раз, когда вы выполняете закрепление, Git генерирует уникальный иден- тификатор из 40 символов. Сохраняется информация о том, кто выполнил из- менение, когда оно было выполнено, а также передаваемое сообщение. Не вся эта информация вам понадобится, поэтому Git предоставляет возможность вывести упрощенный вариант записи журнала: git_practice$ |