Архив

Публикации с меткой ‘hints’

Zsh: Переход по словам, удаление слов целиком.

Не знаю где я это впервые встретил, но мне очень нравится фича в shell'е когда можно удалить слово целиком или переместится на целое слово. Обычно это делается в виде комбинации ctrl+стрелка для перехода и ctrl+delete/ctrl+backspace для удаления слова целиком (или, вместо ctrl можно использовать alt). Однако, в Ubuntu под zsh у меня "из коробки" работает только alt+backspace. Поправим досадное недоразумение. Читать далее...

Python: Маленькая хитрость. if-else vs and-or.

На этот раз будет мини-заметка, уж слишком мне понравился трюк, о котором пойдёт речь дальше.

Наверное любому программисту приходится часто писать конструкции такого вида:

if a == b:
c = d
else:
c = e

Как-то разбирая исходники какого-то проекта (скорее всего, это была Django) наткнулся на весьма компактную замену. Вот для сравнения два аналогичных блока кода с использованием логических операций python’а и с использованием конструкции if-else:

# if-else:
if random.random() > 0.5:
a = 1
else:
a = 0

# and-or style:
a = random.random() > 0.5 and 1 or 0

На мой взгляд выглядит гораздо лучше и компактнее (да-да, if-else можно записать в 2 строчки вместо 4, но мне так не нравится). Другое дело, что некоторым это может показаться противоречиво с некоторыми пунктами дзена python’а (import this), но это спорно. В общем использую там, где считаю нужным.

Кстати, если кого-то интересует производительность, то она примерно одинакова, далее выложу тесты и объяснение логики для тех, кому интересно. Читать далее...