Вопрос: может ли set содержать два одинаковых объекта? Ответ: да, запросто! Делаем класс: Как это? set запоминает хэш объекта при вставке, а потом не следит за тем, меняется ли как-то объект или нет, это было бы очень накладно. Изначально мы вставляли 20, но потом уже поменяли его на 30, тем самым сломав set. «Починить» такой…
Метка: секреты Python
О точности float в Python
Хочу пописать немного про математику, статистику, анализ данных и машинное обучение. Но для этого надо начать с небольшой базы по представлению вещественных чисел в Python. Кто-то, вероятно, слышал о проблеме 0.1 + 0.1 + 0.1 == 0.3. Вкратце, вбейте в интерпретаторе Python: Здравый смысл подсказывает нам, что здесь что-то не так, должно же равняться! Новичков…
Подчеркивание в Python
Знак подчеркивания _ или underscore занимает особое место в Python. Подчеркивание имеет множество применений, как эстетических конвенций (необязательная договоренность разработчиков оформлять код с подчеркиваниями), так и функциональных, т. е. реально затрагивающих исполнение кода (такие места буду отмечать знаком ⚠️). змеиный_регистр (snake_case) имена магических методов и переменных «приватные» члены класса и коверкание имен (mangling) игнорирование значения…
Многоликий else
Все знают, что ключевое слово else служит для выполнения альтернативной ветки кода, если условие if не выполнилось: Но знали ли вы, что есть еще два примения else? 1. for/else, while/else Если поставить else после тела цикла, то код по else будет выполнен только в том случае, если цикл завершился «нормально», т.е. в цикле не исполнилось…
А вы знали про hash(-1)?
(Речь идет о реализации CPython) Встроенная функция hash возвращает целое число – хэш-сумму, которое используется при сравнении ключей словаря во время поиска, например. Для пользовательских классов hash вызывает магический метод класса __hash__ , а для примитивных типов уже есть встроенная реализация на Си. Примечательно, что для чисел hash обычно возвращает само же значение числа-аргумента, кроме…