На этот раз будет мини-заметка, уж слишком мне понравился трюк, о котором пойдёт речь дальше :).
Наверное любому программисту приходится часто писать конструкции такого вида:
if a == b:
c = d
else:
c = e
Как-то разбирая исходники какого-то проекта наткнулся на весьма компактную замену. Вот для сравнения два аналогичных блока кода с использованием логических операций 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), но это спорно :). В общем использую там, где считаю нужным.
Кстати, если кого-то интересует производительность, то она примерно одинакова, далее выложу тесты и объяснение логики для тех, кому интересно.
Читать далее…
lizz Программирование, общие вопросы hints, Python
Встала задача написания небольшой графической оболочки для программы с минимальным интерфейсом (одна кнопка и одно поле вывода). Много нам не надо, поэтому решил обойтись идущей вместе с python’ом в поставке библиотекой TkInter. И тут столкнулся с небольшой проблемой – при нажатии кнопки запускаются довольно долгие и объёмные вычисления, из-за которых виснет весь интерфейс программы.
Читать далее…
lizz Программирование, общие вопросы, прикладное GUI, Python, TkInter
Как-то лень было писать для задачки интерфейс, а в универе требовали, и тут в мою голову пришла мысль, что не плохо было бы иметь что-то вроде аналога интерактивного режима интерпретатора python’а (лицезреть который Вы можете выполнив команду python или нажав в виндовской IDLE F5).
Читать далее…
lizz Программирование, общие вопросы Python
Начнём с того, что такое SWIG. Итак, это мега-штука, которая предоставляет интерфейс скриптовым языкам (PHP, Python, Tcl, etc) к коду на C/C++. На официальном сайте есть несколько туториалов, которые вкратце показывают как можно применить SWIG для того или инного языка и python в их числе. Вроде при попытке повторить действия никаких ошибок не происходит, однако почему-то никак не получалось получить доступ к описанной в C++ структуре и объявленой там же переменной.
Итак, данный пост содержит немного подправленые инструкции из туториала с официального сайта SWIG для python.
Читать далее…
lizz Программирование, общие вопросы C/C++, Python, SWIG
Последние комментарии