В моем коде есть множество сравнений на равенство различных контейнеров (list, dict и т. Д.). Ключи и значения контейнеров относятся к типам float, bool, int и str. Встроенные == и! = Работали отлично.
Я только что узнал, что числа с плавающей запятой, используемые в значениях контейнеров, необходимо сравнивать с помощью специальной функции сравнения. Я уже написал эту функцию (назовем ее окнуal () и предположим, что она принимает два числа с плавающей запятой и возвращает True, если они считаются равными, и False в противном случае).
Я предпочитаю, чтобы изменения в существующем коде были сведены к минимуму. (Новые классы, функции и т. Д. Могут быть настолько сложными, насколько это необходимо.)
Пример:
if dict1 != dict2:
raise DataMismatch
Условие dict1! = Dict2
необходимо переписать так, чтобы любые числа с плавающей запятой, используемые в значениях dict1 и dict2 сравниваются с использованием функции aboutEqual вместо __ eq __
.
Фактическое содержимое словарей поступает из различных источников (файлы синтаксического анализа, вычисления и т. д.).
Примечание: Я ранее задавал вопрос о том, как переопределить встроенную функцию float eq . Это было бы простое решение, но я узнал, что Python не позволяет переопределять встроенные типы оператора __ eq __
. Отсюда этот новый вопрос.