Какой надежный способ узнать хешируемый ли объект
Python
Middle
Без компании
Какой надежный способ узнать хешируемый ли объект
Ответы
В Python объект считается хешируемым, если он имеет метод `__hash__()` и его хеш-значение никогда не меняется. Надежный способ проверить хешируемость — использовать функцию `hash()`, которая вызовет `TypeError` для нехешируемых объектов.
```
def is_hashable(obj):
try:
hash(obj)
return True
except TypeError:
return False
print(is_hashable(42)) # True (int хешируем)
print(is_hashable("hello")) # True (str хешируем)
print(is_hashable([1, 2])) # False (list нехешируем)
print(is_hashable((1, 2))) # True (tuple хешируем, если элементы хешируемы)
```
**Важно:** Кортеж хешируем только если все его элементы хешируемы. Например, `([1, 2], 3)` вызовет `TypeError`, так как содержит список.