Синтаксис Python: генераторы

Генераторы это итерируемые объекты, которые можно прочитать лишь один раз. Это связано с тем, что они не хранят значения в памяти, а генерируют их на лету:

>>> mygenerator = (x*x for x in range(3))
>>> for i in mygenerator :
...    print(i)
0
1
4

Казалось бы, всего один раз можно пройти по данным. Зачем это?

На практике мы редко проходим по ...

more ...

Учебные материалы: Python. Подробный справочник

Не так редко спрашивают "Какую книжку почитать". Ответить на такой вопрос не просто, ибо зависит от человека. Однако, есть и универсальные книги - справочники. Сегодня хочу представить аннотацию к книге - Python. Подробный справочник от Дэвида Бизли.

«Python. Подробный справочник» — это авторитетное руководство и детальный путеводитель по языку программирования Python. Книга предназначена для практикующих программистов; она нацелена на суть дела и написана ...

more ...

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

Еще один стандартный модуль в Python - itertools. Модуль itertools - сборник полезных итераторов.

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

Ссылки по теме:

more ...

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

Docstring - (сокращение от documentation string, строка документации) встроенное средство документирования модулей, функций, классов и методов. Делается очень просто - сразу после определения указывается строковое значение, которое и будет docstring'ом.

>>> def test():
...    "This is the test's docstring"
...    print "opa"

Получить доступ к docstring можно так:

>>> test.__doc__
"This is the test's docstring"

Либо так:

>>> help(test)
Help on function ...
more ...

Полезные модули: PySide

PySide — привязка языка Python к инструментарию Qt, совместимая на уровне API с PyQt. В отличие от PyQt, PySide доступна для свободного использования как в открытых, так и закрытых, в частности, коммерческих проектах, поскольку лицензирована по LGPL.

Проект возник в результате нежелания создателей PyQt менять лицензионную политику для своего проекта. Свет PySide увидел в августе 2009 года, когда была выпущена первая ...

more ...

Полезные модули: PyQt

Проекты все чаще зарождаются именно в web, однако, и десктоп ПО еще живо, да и инструментарий к нему. В частности, кроссплатформенный фреймворк Qt имеет обертку для Python - PyQt.

Уже давно все крупные GUI-фреймворки имеют дизайнер форм (в нашем случае - Qt designer). В которой вы можете набросать мышкой кнопки на формы, а уже затем в коде добавить логику работы с ними ...

more ...

Опыт разработчиков: файл requirements.txt в каждый проект

Первой проблемой при поддержке старых проектов является понять, как запустить его. Чтобы немного упростить эту задачу разработчики используют pip и файл requirements.txt. В этом файле записываются все необходимые для работы библиотеки и, что самое главное, указывают версии этих библиотек.

Имея такой файл настройка окружения для старта проекта может состоять из одной команды:

pip install -r requirements.txt
more ...

Пишем web-проекты: выжимаем максимум из PostgreSQL

Postgres предоставляет много встроенных возможностей для создания эфективных приложений, использующих базы данных. А в версии 9.4 появляется еще и полноценное JSON поле, при правильном использовании которого, отпадает необходимость использвания NoSQL баз данных. В докладе мы рассмотрим, как использовать этот потенциал по максимуму в своих Python/Django приложениях.

more ...

Полезные инструменты: django-debug-toolbar

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

С десктоп программами все ясно - сиди тыкай точки остановки и изучай состояние программы, а что делать с web?

А делать вот что - ставить debug toolbar: https://github.com/django-debug-toolbar/django-debug-toolbar ...

more ...

Тесты тесты тесты: doctest

Тесты можно писать прям в коде, а точнее в docstring.

Модуль doctest ищет куски текста, которые выглядят как интерактивные сессии Python и затем выполняет эти сессии, чтобы проверить, что они работают точно так же, как показано.

Есть несколько стандартных причин, чтобы использовать doctest:

  • Для того, чтобы проверить актуальность строк документации, убедившись, что все интерактивные примеры работают именно так, как задокументировано ...
more ...