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

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


Новый материал в ленте
  Sphinx - 7.3.6

Python генератор документации. Скачать можно по ссылке: https://pypi.python.org/pypi/Sphinx/


Python Дайджест. Выпуск 94

(05.10.2015 - 11.10.2015)

поделиться выпуском 
pythondigest.ru: Выпуск 94

Статьи

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

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

  pywhat - подборка неочевидных и вводящих в заблуждение языковых консрукций

Не только в Ruby и JavaScript есть неочевидные вещи. Python тоже не отстает.

  Создаем Накладную на Python и xtopdf

В статье приведен готовый код, который может создать PDF файл накладной

  Пишем графическую программу на Python с tkinter

В работе со студентами и учениками я заметила, что при изучении какого-либо языка программирования большой интерес вызывает работа с графикой. Даже те студенты, которые скучали на заданиях про числа Фибоначчи, и уже казалось бы у них пропадал интерес к изучению языка, активизировались на темах, связанных с графикой.

Поэтому предлагаю потренироваться в написании небольшой графической програмки на Python с использованием tkinter (кроссплатформенная библиотека для разработки графического интерфейса на языке Python).

Код в этой статье написан для Python 3.5. 

Колонка автора

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

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

....

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

  Python проекты: интерпретатор PyPy

PyPy — это интерпретатор Python, который написан на Python (RPython) и может компилировать сам себя.

Основное отличие от обычного CPython — наличие JIT компилятора. Прелесть JIT компилятора в том, что в течении работы программы оптимизируются ее части.

Скорость исполнения кода на PyPy выше. На сайте http://speed.pypy.org/ вы можете найти сравнения CPython и PyPy. На сайте есть график (в самом низу): На графике видно, что скорость исполнения одного и того же кода на CPython и PyPy различается в среднем в 7 раза.

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

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

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

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

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

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

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

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

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

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

...

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

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

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

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

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

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

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

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

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

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

...

Интересные проекты, инструменты, библиотеки

  afl-utils - набор утилит для упрощения работы с american fuzzy lop

american fuzzy lop - это утилита fuzzy testing. А afl-utils это набор утилит, которые упрощают работу с первым.

  pyquery - jquery-подобная библиотека для python

pyquery позволяет делать запросы к XML документам. Является оберткой над lxml. API весьма похож на jquery.

  pyinstaller - утилита для запуска Python-кода без ручного скачивания зависимостей

pyinstaller - самостоятельно анализирует ваш код, скачивает зависимости и запускает код. Это может быть полезно для запуска на компьютере клиента, где нет Python

  Скрытая отправка файлов через DNS

В рамках проекта dnsteal развивается фиктивный DNS-сервер, позволяющий организовать скрытую отправку файлов по протоколу DNS, используя штатные системные утилиты резолвинга.

  effect - функциональная библиотека, добавляет изоляцию побочных эффектов

effect - это библиотека для напиания чисто функционального кода, изолируя подочные эффекты для IO и состояния.

  ULNNO - Unsupervised Learning on Neural Network Outputs

Репозиторий содержит код для обучения Нейронной сети без учителя.

  django-skd-smoke - Генерация smoke тестов

Проект позволяет генерировать smoke тесты для django проектов на основе указанной конфигурации.

  pigar - собираем файл requirements.txt в автоматическом режиме

Утилита позволяет провести анализ вашего кода и составить наборы requirements.txt  для Python 2 и Python 3

Релизы

  psycopg2 - 2.7

Python интерфейс для PostgreSQL. Изменения описаны по ссылке https://allmychanges.com/p/python/psycopg2/#2.7. Скачать можно по ссылке: http://pypi.python.org/pypi/psycopg2/