BOOKPYTHON Telegram 3669
В Python можно использовать любой объект в качестве ключа словаря, если он реализует метод __hash__. Этот метод может возвращать любое целое число, но есть одно обязательное условие: равные объекты должны иметь одинаковые хэши (обратное не обязательно).

Также не стоит использовать изменяемые объекты в качестве ключей, потому что если объект изменится и станет не равным самому себе в прошлом, его больше нельзя будет найти в словаре.

Есть и один странный момент, который может удивить во время отладки или написания unit-тестов:


class A:
def __init__(self, x):
self.x = x

def __hash__(self):
return self.x



hash(A(2)) # 2
hash(A(1)) # 1
hash(A(0)) # 0
hash(A(-1)) # внимание!
# -2
hash(A(-2)) # -2


В CPython значение -1 зарезервировано для внутренних ошибок, поэтому оно неявно преобразуется в -2.

👉@BookPython



tgoop.com/BookPython/3669
Create:
Last Update:

В Python можно использовать любой объект в качестве ключа словаря, если он реализует метод __hash__. Этот метод может возвращать любое целое число, но есть одно обязательное условие: равные объекты должны иметь одинаковые хэши (обратное не обязательно).

Также не стоит использовать изменяемые объекты в качестве ключей, потому что если объект изменится и станет не равным самому себе в прошлом, его больше нельзя будет найти в словаре.

Есть и один странный момент, который может удивить во время отладки или написания unit-тестов:


class A:
def __init__(self, x):
self.x = x

def __hash__(self):
return self.x



hash(A(2)) # 2
hash(A(1)) # 1
hash(A(0)) # 0
hash(A(-1)) # внимание!
# -2
hash(A(-2)) # -2


В CPython значение -1 зарезервировано для внутренних ошибок, поэтому оно неявно преобразуется в -2.

👉@BookPython

BY Библиотека Python разработчика | Книги по питону


Share with your friend now:
tgoop.com/BookPython/3669

View MORE
Open in Telegram


Telegram News

Date: |

Channel login must contain 5-32 characters Hashtags are a fast way to find the correct information on social media. To put your content out there, be sure to add hashtags to each post. We have two intelligent tips to give you: Telegram message that reads: "Bear Market Screaming Therapy Group. You are only allowed to send screaming voice notes. Everything else = BAN. Text pics, videos, stickers, gif = BAN. Anything other than screaming = BAN. You think you are smart = BAN. While some crypto traders move toward screaming as a coping mechanism, many mental health experts have argued that “scream therapy” is pseudoscience. Scientific research or no, it obviously feels good.
from us


Telegram Библиотека Python разработчика | Книги по питону
FROM American