IT-новости про Python, которые стоит знать

Собрали в одном месте самые важные ссылки
читайте нас в Twitter

     08.10.2015       Выпуск 94 (05.10.2015 - 11.10.2015)       Колонка автора

Hardcore Python: переопределяем механизм импорта

В стандартной Python начиная с 2.3 существует механизм импорт-хуков. Зачем они нужны? Все очень просто - захотелось добавить поддержку импорта из .zip архивов. Ява такое может (.jar) - чем Питон хуже? Но открывать редактор только ради .zip не очень... Поэтому Python умеет загружать модули из базы данных или с соседнего сервера.

Механизм механизм импорт-хуков реализован с помощью:

  • sys.meta_path
  • sys.path_hooks
  • sys.path_import_cache

...

     08.10.2015       Выпуск 94 (05.10.2015 - 11.10.2015)       Колонка автора

Опыт разработчиков: замыкания (closure). Зачем и почему.

В синтаксисе Python один и тот же символ или конструкция часто используется для разных целей Возможно вы встречались с подобным кодом:

....

Похож на декоратор. Это называется замыканием. Это более общий случай декоратора. Смысл замыкания состоит в том, что определение функции "замораживает" окружающий её контекст на момент определения. Это может делаться различными способами, например, за счёт параметризации создания функции

     07.10.2015       Выпуск 94 (05.10.2015 - 11.10.2015)       Колонка автора

Пишем web-проекты: полиморфные связи или Foreign Key на две Django модели

Представим ситуацию. Есть модель Текст (заголовок, тело, теги) и модели Новость, Продукт, Реклама, которые имеют свои уникальные параметры. Необходимо связать Текст и все остальные - вполне логичное желание.

Как можно поступить:

  • Добавить Foreign Key в Текст (т.е. будет N=3 Foreign Key полей)
  • Сделать отдельные модели для связи - будет 3 таблицы для связки. (вручную их сделаем)
  • Сделать 2 поля, одно из которых будет говорить, какая модель имеется в виду, а второе – хранить ключ этой модели. + добавить свойство, которое будет возвращать запись из нужной модели (делать нужный query запрос)

...

     07.10.2015       Выпуск 94 (05.10.2015 - 11.10.2015)       Статьи

Функциональные тесты: Django + Selenium WebDriver и 3 варианта на Ваш выбор

«В жизни каждого django-разработчика наступает момент, когда он решительно рвет со своим прошлым, лишенным функционального тестирования!» Об этом и поговорим. 

     07.10.2015       Выпуск 94 (05.10.2015 - 11.10.2015)       Колонка автора

Полезные инструменты: tox как средство тестирования

Если вы автор Python-библиотеки, то скорее всего вам необходимо поддерживать несколько версий Python. Стандартный набор - 2.6, 2.7, 3.3, 3.4 и сейчас уже 3.5. Поддерживать несколько версий Python помогают тесты.

Не секрет, что тесты помогают допускать меньше ошибок во время поддержки проекта. Например, вы можете смелее делать рефакторинг и быть уверены, что функционал который проверяют тесты работает.

Пускай написали тесты для озвученных версий Python, как их запускать? Постоянно менять venv и тыкать python run_test.py? Есть удобнее инструмент - tox...

     06.10.2015       Выпуск 94 (05.10.2015 - 11.10.2015)       Колонка автора

Учебные материалы: научная графика в python

На русском языке не так много хороший книг, но есть. Среди них выделяется пособие Шабанова Павла.

Данное электронное пособие на русском языке посвящено работе с научной графикой с помощью графической библиотекой matplotlib языка программирования python.

Учебник предназначен для всех желающих освоить библиотеку matplotlib для создания научной графики в python. Книга будет интересна студентам, аспирантам и научным сотрудникам всех возрастов.

Главная цель пособия - облегчить изучение библиотеки matplotlib и предложить ряд готовых решений для создания научной графики высокого публикационного качества. Приведённые в учебнике примеры показывают возможности языка python для визуализации результатов научной деятельности.

Ссылка на книгу: https://github.com/whitehorn/Scientific_graphics_in_python

     06.10.2015       Выпуск 94 (05.10.2015 - 11.10.2015)       Колонка автора

Таинство стандартной библиотеки: functools.lru_cache — кэшируем результат выполнения функции

Начиная с версии 3.2, в Python появилась возможность стандартными средствами организовать мемоизацию. Иными словами, кэшировать результаты вызова функции. Этот механизм представлен в виде декоратора в модуле functools и называется lru_cache (least recently used cache)...

     03.10.2015       Выпуск 93 (28.09.2015 - 04.10.2015)       Статьи

Рекомендательная система на .Net или первые шаги с MyMediaLite

Пошел я как-то на курсы по BigData, по рекомендации друзей и мне посчастливилось поучаствовать в соревновании. Не буду рассказывать об обучении на курсе, а расскажу о библиотеке MyMediaLite на .Net и о том, как я ее использовал. 

     05.10.2015       Выпуск 93 (28.09.2015 - 04.10.2015)       Колонка автора

Таинство стандартной библиотеки: multiprocessing

GIL Python снимает множество головной боли с программиста, но и не дает малой кровью использовать всю мощь CPU.
А что если реально надо быстрее исполнить код? Например, надо сделать 1000 запросов в web.
Можно...[Продолжение]

     03.10.2015       Выпуск 93 (28.09.2015 - 04.10.2015)       Колонка автора

Таинство стандартной библиотеки: logging

Logging — библиотека для удобного ведения логов в Python
В любой разработке приходится рано или поздно вести логи, ведь не отдашь же заказчику программу где отладочные сообщения выводятся с помощью print, да и в...[Продолжение]

     02.10.2015       Выпуск 93 (28.09.2015 - 04.10.2015)       Колонка автора

Hardcore Python: Python и Real-time?

Возможно!
Рассказ "Управление памятью в real-time приложениях Python" Антона Патрушева покажет как можно писать Python приложения с максимально быстрым откликом.

PyNSK #3 — третья встреча Новосибирского Python сообщества

IT-досуг в Новосибирске не отстает от столицы — почти каждую неделю можно пообщаться о технологиях в кругу единомышленников. Для любителей Python организовано сообщество PyNSK. 11-го октября (воскресенье) состоится третья встреча. Она пройдет в анти-кафе «Самовар» и начнется 13-00. На встрече вас ждет море общения и 2 доклада:...

     30.09.2015       Выпуск 93 (28.09.2015 - 04.10.2015)       Статьи

Пробуем JSON в Django и PostgreSQL (и сравниваем с MongoDB)

В Django 1.9 будет добавлено поле JSONField, его можно использовать с базой данных PostgreSQL >= 9.4. Давайте попробуем с ним поработать и оценить, насколько оно удобно.

В данный момент доступна альфа версия django 1.9, финальная запланирована на декабрь 2015. Установить альфа версию можно так:

pip install --pre django

Итак представим, что у нас есть интернет магазин, в котором мы предлагаем товары разных типов. Например, ноутбуки и футболки. Очевидно, что у таких товаров будет разный набор параметров: у футболок будет размер, цвет, а у ноутбуков - размер экрана, частота процессора, объем жесткого диска и прочее. Один из подходов для работы с такими данными в SQL - Entity–attribute–value model (EAV).

     01.10.2015       Выпуск 93 (28.09.2015 - 04.10.2015)       Колонка автора

Интересные концепции: mixin'ы (примеси)

В определенных случаях множественное наследование это зло.
Добро - когда классы родители не перекрывают друг друга. Частный случай такой схемы - примиси == миксины == mixin == mix in.
Концепция примисей...[Продолжение]

     01.10.2015       Выпуск 93 (28.09.2015 - 04.10.2015)       Колонка автора

Полезные инструменты: pythontutor.com

Представим ситуацию, вы читаете лекцию, пускай студентам. Хочется все по шагам и подробно рассказать о данном куске кода.
Можно вести славеса пол часа, а можно продемонстрировать с помощью

Полезные инструменты: pylint - в поисках ошибок

Статический анализ кода — анализ кода без реального исполнения кода.
Под словом "анализ" можно понимать многое - что код соответствует PEP8, что код безопасный (все типы верно приведены), что код не содержит...[Продолжение]

     29.09.2015       Выпуск 93 (28.09.2015 - 04.10.2015)       Статьи

Наиболее частые проблемы Python и решения

Перевод статьи «Most Frequent Python Problems and Solution» с сайта pamno.com. Мы проанализировали Stack Overflow на предмет наиболее часто встречающихся проблем и резюмировали ответы. 

     30.09.2015       Выпуск 93 (28.09.2015 - 04.10.2015)       Колонка автора

Полезные библиотеки: langid.py

Представим ситуацию: есть блог, в котором публикуются посты на двух языках (а может и на 10). Необходимо рассортировать посты по языкам в разные RSS. (постов очень много, пускай 1000)
Вопрос к аудитории - как вы...[Продолжение]

     29.09.2015       Выпуск 93 (28.09.2015 - 04.10.2015)       Видео
     28.09.2015       Выпуск 93 (28.09.2015 - 04.10.2015)       Колонка автора

Таинство стандартной библиотеки: Магические методы в Python

Статья от Rafe Kettler.
Что такое магические методы?
Они всё в объектно-ориентированном Питоне. Это специальные методы, с помощью которых вы можете добавить в ваши классы «магию». Они всегда обрамлены двумя...[Продолжение]