Синтаксис Python: *args, **kwargs

При написании кода не всегда хочется явно прописывать все аргументы. Например - на вход программы подается набор аргументов:

def run_program(config_folder, config_name, split_symbol, verbose=False):
    pass

Появляется новая опция - добавляй аргумент и явно указывай при вызове функции

run_program('/tmp', 'config_1.yaml', '#####', True)

Но в какой-то момент появляются опциональные аргументы. В этот момент приходит на помощь *args и **kwargs.

Примечание: символы , * применяются ...

more ...

Таинство стандартной библиотеки: shelve - база данных для объектов

Модуль shelve из стандартной библиотекой можно описать одной фразой - "pickle + anydbm".

shelve позволяет сериализовать объект (прям как pickle), а потом сохранить его в виде похожем на БД (интерфейс anydbm).

>>> import shelve
>>> db = shelve.open(filename)
>>> db[key] = obj
>>> obj = db[key]
>>> db.close()

Как видно из небольшого примера, БД предоставляет интерфейс словаря. Это позволяет нам сохранять различные сериализуемые объекты под ...

more ...

Python на службе народа: оповещения в Linux

Оповещения - это зло для продуктивности, но без них тяжело. Сервер упал - как узнать об этом мгновенно? СМС, письмо на email, оповещение на рабочем столе.

К сожалению, без Qt, Wx и других фреймворков кроссплатформенные оповещения не сделать. Поэтому рассмотрим только Linux. Для linux есть библиотека libnotify и обязка для нее python-notify

Установим:

sudo apt-get install python-notify

После чего можно использовать команду ...

more ...

Таинство стандартной библиотеки: asyncio в Python. Как устроено и зачем нужно?

Видео со свежего Moscow Python митапа.

В python 3.4 появился asyncio. До сих пор многие разработчики не знают, что это такое, как реализуется асинхронность в Python и в чем её сильные и слабые места. Повторим пройденное и заглянем под капот.

more ...

API всему голова: gitter api - пишем в чат от своего лица

Gitter - это система для создания чатов для пользователей Github. Чаты бесплатны, есть интеграция с Github, есть API - что еще для небольшого чата надо?

Сегодня мы научимся писать в чат с помощью API. В заголовке отметил, что будем писать от своего лица, поэтому будет все просто.

Для начала стоит изучить возможность API -> https://developer.gitter.im/docs/welcome

После чего авторизуйтесь ...

more ...

Пишем web-проекты: Гексагональная архитектура в приложениях Django

Видео со свежего Moscow Python митапа.

Как не превратить свой проект в груду урлов? Как не потерять расширяемость с ростом кодовой базы? Как писать поддерживаемый код? Об этих проблемах и их возможных решениях на примере Django расскажет и покажет Малышев Артем.

more ...

Пишем web-проекты: django сигналы

Хочется поделиться ссылкой на статью - https://zxmd.wordpress.com/2013/05/23/django_signals/

Что такое сигнал в Django Framework ?

На бытовом уровне это система (диспетчер сигналов) которая обрабатывает некоторые виды событий которые генерирует система. По сути система сигналов разделяется на два компонента:

sender — компонент посылающий сигнал; receiver — компонент отвечающий за обработку сигнала. ...

more ...

Интересные концепции: опциональная статическая типизация

Не секрет, что Python (CPython) - динамически типизируемый язык (все типы выясняются во время выполнения программы). Это как дар так и проклятие. С одной стороны - можно быстрее писать программы, с другой - тяжелее найти ошибки. При этом, если была бы статическая типизация - уже на этапе компиляции мы знали бы где мы затупили с типами.

В русскоязычном Python Андрей Власовских из Jetbrains наиболее ...

more ...

Python на службе народа: добавляем водяной знак на изображение

PIL - мощная библиотека для работы с изображениями. С помощью этой библиотеки можно выделять необходимые части картинок, конвертировать между форматами, рисовать, накладывать слои.

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

# coding=utf-8

from PIL import Image, ImageEnhance

"""
image - картинка, на которую накладываете изображение
watermark - картинка, которую накладываете
opacity - прозрачность
wm_interval - интервал между изображениями watermark ...
more ...

Полезные инструменты: sandman - админка над базой + REST за пару секунд

Сейчас редкий проект обходится без базы данных. Это может быть реляционная БД, или NoSQL, да может просто текстовые файлы. И каждый раз возникает необходимость посмотреть данные в ней, а иногда и другим показать.

В этом случае подойдет инструмент - sandman.

Sandman - позволяет за пару секунд сделать web-интерфейс для популярных БД.

Выполняем команду:

sandmanctl sqlite:////tmp/my_database.db

Получаем

Image

Инструмент почти не ...

more ...