Собрали в одном месте самые важные ссылки
читайте нас в Telegram
Замечено, что новичкам трудно перейти от теории к практике - заставить себя писать, а не только читать. Чтобы помочь мы постоянно публикуем различный материал и указываем как применить эти знания на практике.
В этот раз решили написать 2 небольших проекта:
В Python списки по реализации похожи на векторы. А векторы это динамические массивы, то есть последовательности элементов. К этим элементам можно обращаться - получить первый, второй, пятый, десятый элемент. Положение в массиве - это индекс.
Начинаем новую рубрику - "Примеры кода". В данной категории постов мы будем публиковать небольшие(или большие) куски кода. Это могут быть как решение определенных задач/вопросов так и небольшие примеры кода с применением инструментов.
Django - самый популярный web-фреймворк для Python. Этому доказательство - количество библиотек расширяющих возможности.
От этого множество авторов пишут статьи с названиями "Мой топ 10 django-модулей", мы не исключение и будем такие писать.
В посте http://pynsk.ru/posts/2015/Nov/26/api-vsemu-golova-vkontakte-ot-nachala-do-otpravki-soobshcheniia-drugu/ было рассказано как начать работать с VK API.
НГ совсем близко. Python хорошо подходит для автоматизации. Поэтому в этот раз рубрика "Примеры кода"пополняется скриптом поздравления друзей с Новым Годом:
Сегодня хочу описать как работать с Feedly через их API в языке Python.
Для начала ссылки, которые точно понадобятся:
В модуле datetime есть now() - метод, который возвращает текущее время. Применяется метод часто, например, создаем новую запись в базе данных - в лог пишем запись от текущего времени.
Вот только такой код оттестировать не всегда просто - иногда надо чтобы now() возвращал конкретное время. Для этого случая есть freezegun:
Количество кода - это некоторый критерий для ПО. Практика показывает, что чем больше кода - тем сложнее поддерживать и развивать продукт. А если в этом коде много copy-past'ы, то совсем плохо.
Для выявления повторяющихся кусков кода существуют различные инструменты. Один из них CloneDigger. Это старая разработка (еще в 2008 году автор выступал на EuroPython), однако, работает хорошо и на данный момент.
Коротко: all и any - встроенные методы, которые позволяют проверять все элементов списка на выполнение условия.
При валидации данных часто возникает задача проверить структуру на корректность. Например, пускай есть список словарей:
Python обладает широкими динамическими возможностями. Строгая динамическая неявная типизация позволяет не указывать типы, но при этом не бояться что в коде просуммируем строку и число. Однако за динамичность приходиться платить - памятью и скоростью.
Но что если хочется максимально уменьшить размер объектов (а в python все объекты) и при этом не потерять в функциональности? Для примера возьмем плоскость. На плоскости, пускай, надо разместить миллион точек (что не так много). При этом надо иметь возможность красить точку в разные цвета, расстояния подсчитывать и прочие действия.
Продолжаем предлагать различные задачи для практики. Кто заинтересуется решением этих задач, просим помогать друг-другу. Но при этом в течении недели не кидать ссылок на полностью готовое решение. А также, чтобы читать код было удобно - публикуйте его на https://gist.github.com/ или какой-то подобный сервис.
Описание задачи:
При парсинге возникают совсем странные ошибки - одна из них - не валидный HTML. Т.е. с ошибками. Верстальщик забыл закрыть таблицу или body. Еще бывает что вставляют HTML из Word, а там тааккккооооой код.
Чтобы очистить HTML от мусора можно применять инструмент Tidy.
Опыт показывает, что каждый проект обладает своими зависимостями (библиотеками), а если и одинаковыми, то версии не совпадают. Чтобы упростить запуск и настройку проекта разработчики пишутINSTALL.md, README.md, make-файлы и что более важно - requirements.txt.
Файл requirements.txt - это правило хорошего тона для Python проектов. Файл содержит список необходимых библиотек для запуска с указанием версий:
Python прикладывает множество усилий чтобы скрыть все различия операционных систем. Если смотреть на файлы, а точнее на пути файлов, то легко можно заметить различия между Linux и Windows:
C:\Program Files (x86)
/home/user/documents
Python отлично подходит для написания самых различных серверных утилит. Часто такие утилиты дополняют CLI (Command Line Interface), а иногда и целым GUI.
Но как его сделать? На сервере часто нет X сервера. нет Qt и чего-то такого, а Python есть. Возможно вы слышали про ncurses - библиотека для управления IO. Вот ее и можно использовать для такой задачи - стандартная библиотека содержит модуль curses.
Менеджеры контекста — это механизм стоящий за ключевым словом with.
Ключевое слово with появилось еще в Python 2.5 (через __future__). Такая конструкция пришла на смену концепту setup..try..except..finally
О Twitter нечего писать, проект уже взрослый и известный. Через Твиттер продают, покупают, разыгрывают призы, консультируют, оказывают поддержку проектов, да даже используют как сервис оповещений. Twitter имеет открытый API, который сегодня и освоим. Мы научимся публиковать пост с изображением через Twitter API
Продолжаем предлагать различные задачи для практики. Кто заинтересуется решением этих задач, просим помогать друг-другу. Но при этом в течении недели не кидать ссылок на полностью готовое решение. А также, чтобы читать код было удобно - публикуйте его на https://gist.github.com/ или какой-то подобный сервис.
Описание задачи:
Модуль shelve из стандартной библиотекой можно описать одной фразой - "pickle + anydbm".
shelve позволяет сериализовать объект (прям как pickle), а потом сохранить его в виде похожем на БД (интерфейс anydbm).