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

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

     12.10.2015       Выпуск 95 (12.10.2015 - 18.10.2015)       Колонка автора

Синтаксис Python: do...while

Цикл do while отличается от цикла while тем, что в do while сначала выполняется тело цикла, а затем проверяется условие продолжения цикла. Из-за такой особенности do while называют циклом с постусловием. Таким образом, если условие do while заведомо ложное, то хотя бы один раз блок операторов в теле цикла do while выполнится.

Иииии.... такой конструкции - do...while нет в Python. Написать цикл с постусловие можно так:

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

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

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

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

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

     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)       Колонка автора

Полезные инструменты: 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)...

     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 приложения с максимально быстрым откликом.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Синтаксис Python: frozenset - морозное множество

frozenset и set, это как кортеж (tuple) и список. Первые являются неизменяемыми, вторые изменяемые.
Иммутабельные(неизменяемые) структуры данных - это коллекции, которые нельзя изменить. Примерно как числа. Число...[Продолжение]

     27.09.2015       Выпуск 92 (21.09.2015 - 27.09.2015)       Колонка автора

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

Модуль collections - предоставляет специализированные типы данных, на основе словарей, кортежей, множеств, списков. Этот модуль хорошо себя показывает при частой работе со словарями и списками.
Например, данный...[Продолжение]

     26.09.2015       Выпуск 92 (21.09.2015 - 27.09.2015)       Колонка автора

Таинство стандартной библиотеки: мета-классы, что это и зачем

В Python все является объектом. Даже класс. Не объект класса, а сам класс.
»> ().__class__
<type 'tuple'>
»> ().__class__.__class__
<type 'type'>...[Продолжение]

     25.09.2015       Выпуск 92 (21.09.2015 - 27.09.2015)       Колонка автора

Опыт разработчиков: основы декларативной магии

http://www.youtube.com/watch?v=luhyEER7_KM">http://www.youtube.com/watch">http://www.youtube.com/watch?v=luhyEER7_KM