Вопросы для Python-собеседования

В последнее время мне часто доводилось проводить собеседования по языку Python. Конечно, одно только хорошее знание языка - это не повод брать человека: есть еще знания алгоритмов, навыки проектирования систем, опыт работы с распределенными системами, ну и всякий, казалось бы, булшит, вроде "умения работать в команде" и тому подобные вещи. Но …

more ...

Дублирующийся код и clonedigger

Так сложилось, что в проекте, над которым я сейчас работаю, существует репозиторий-помойка. Он содержит в себе вспомогательные скрипты на Python, которые писались в разное время разными людьми, которых объединяло одно - наплевательское отношению к происходящему. Практически все скрипты делают одно и то же: импортируют откуда-то данные, каким-то образом их преобразуют и …

more ...

Как не нужно писать на Python, часть 2

Продолжение статьи об идеоматичных конструкциях в Python.

На самом деле, многое из описанного ниже есть в любом более-менее толковом учебнике, но только разбавленное n-ным количеством воды. Я же постараюсь дать только самое основное: примеры и, самое главное, краткое заключение. Мне эта идея кажется удачной, т.к примеры должны лучше объяснить …

more ...

pyrasite - подключение к работающему Python-приложению

Меня давно привлекали возможности Erlang'а и языков Lisp-семейства по интроспекции и горячему обновлению кода работающего приложения. И я уже давно искал инструмент, который бы позволял делать что-то подобное и для Python - и такой инструмент я наконец нашел в виде крутой обертки над gdb - Pyrasite.

Зачем он нужен? Я вижу сразу …

more ...

Несколько слов о virtualenvwrapper

В Python-сообществе очень модно использовать virtualenv для работы с изолированными окружениями. Единственный минус virtualenv - не самый удачный интерфейс к инструменту из коробки. Например, чтобы активировать окружение, нам нужно знать, где оно расположено, а удаление приходится выполнять средствами командного интерпретатора. Эти проблемы призван решить virtualenvwrapper. В рунете я не нашел хотя …

more ...

Настройка логирования в сторонних модулях

В некоторых внешних библиотеках для Python уже встроено логирование через logging из коробки, но не всегда эти записи нужны в общих логах (или вообще нужны). В частности, встроенное логирование есть и в модной библиотеке asyncio, которая недавно стала стандартной (с некоторыми ограничениями). Поскольку явное лучше неявного, это самое неявное логирование …

more ...

Использование Pylint для Python2 и Python3 одновременно

Сегодня речь пойдет об известном противостоянии Python 2.x и Python 3.x, но с доселе неизведанной стороны. Недавно я начал новый домашний проектик на Python 3.4, в то время как рабочие проекты и pet project'ы я пишу на старой доброй второй ветке. Беда подкралась откуда не ждали - со …

more ...

Как не нужно писать на Python, часть 1

Хотя одним из постулатов Python way является фраза "There should be one - and preferably only one - obvious way to do it" - в действительности это не совсем так. В языке достаточно много способов сделать что-то очевидным для новичка способом, но выглядящим ужасно для опытного питониста (и наоборот). Самое ужасное, что, несмотря …

more ...

Реализация игры Жизнь на Python

Меня уже давно интересовала конвеевская игра "Жизнь", и вот наконец-то у меня дошли руки попробовать реализовать ее наиболее простым и элегантным способом. Если кто-не знает, что это за игра - на русской Википедии есть хорошее описание. Для тех, кто знает, но забыл, я постараюсь напомнить классические правила:

  • Время дискретно.
  • Игровое поле …
more ...

Несколько слов о Python

Уже больше года в своей работе я использую Python. Есть мнение, что успех языка задают три составляющие - язык, инструменты и библиотеки. И на каждой из них мне бы хотелось остановиться подробнее. Все описанное ниже верное для моего знания Python 2.7. Возможно, что в третьей ветке что-то кардинально изменилось, или …

more ...