Хэш-функция для функции в Python

Опубликовано 12 September 2017 в Python • Помечено python, cpython

Пару недель назад один из моих коллег задал вопрос: можно ли использовать функцию в качестве ключей словаря? Да, можно. У каждой функции в Питоне есть хеш. Но как он считается? На основе имени функции? На основе байт-кода? В действительности, хэш считается трансформацией над указателем на объект функции. Тем не менее, не так-то легко отыскать эти расчеты в коде CPython.


Продолжить чтение

Success in Programming. Обзор Книги

Опубликовано 17 August 2017 в Обзоры • Помечено брендинг, книга, индустрия

Персональный бренд - тема не так часто обсуждаемая среди программистов. В действительности, я знаю всего несколько людей, обладающих сильным персональным брендом, и всего двоих, кто рассказывает о построении личного бренда программистам. Один из них - Фредерик Харпер (Frederic Harper) с его книгой “Success in Programming.”


Продолжить чтение

Структуры данных и алгоритмы в Java (2-е издание)

Опубликовано 15 August 2017 в Обзоры • Помечено java, лафоре, алгоритмы

Для меня основное достоинство книги "Структуры данных и алгоритмы в Java" - язык которым автор описывает алгоритмы. Он не использует сложный академический язык, приправленный тонной высшей математики. Роберт Лафоре использует простой язык и пытается дать максимально простое объяснение, какое только возможно, каждому алгоритму.


Продолжить чтение

Горячие клавиши Emacs в русской раскладке

Опубликовано 10 June 2017 в Редакторы и IDE • Помечено emacs, layout

Думаю вы как и я не можете позволить себе пользоваться только английской раскладкой клавиатуры. Так или иначе для работы приходится использовать обе: и русскую, и английскую. В целом, это не доставляет никаких проблем, пока дело не касается Emacs. Не знаю почему, но в нем горячие клавиши в русской раскладке просто перестают работать. Видимо, сказывается страшное наследие "ASCII - единственно возможный набор символов для всех языков мира". Возможно, есть какие-то другие причины. Тем не менее, в Emacs есть свой довольно странный способ переключение раскладок (Input Method в терминах Emacs): C-\. Я никогда не находил этот вариант приемлемым и переключался на английскую раскладку каждый раз. Но я все-таки нашел способ как избежать этого и заставить горячие клавиши работать вне зависимости от раскладки клавиатуры.


Продолжить чтение

Property в классе наследнике

Опубликовано 30 May 2017 в Python • Помечено python, property

Кажется очевидным, что property можно переопределить в классе наследнике и вызвать super внутри этого переопределенного свойства. Вроде бы звучит нормально? Да, так и есть. Тем не менее, когда мой коллега задал мне такой вопрос, я "завис" на некоторое время. Возможно я излишне подозрителен, но каждый раз когда в коде есть какая-то магия, я ожидаю подвоха. Поэтому, я решил немного поэкспериментировать и доказать себе, что проперти работают так как ожидается.


Продолжить чтение