Вы можете попробовать это.
if len(word) is 5
РЕДАКТИРОВАТЬ
Видимо, это плохо.Я не знал на момент публикации.Во всяком случае, для тех, кто не знает и не любит, вот небольшой эксперимент
>>> a = "hello"
>>> len(a) is 5
True
>>> len(a) is 4
False
>>> len(a) is 5.0
False
>>> len(a) == 5
True
>>> len(a) == 4
False
>>> len(a) == 5.0
True
РЕДАКТИРОВАТЬ снова Основываясь на комментарии interjay, я также провел эксперимент.
>>> for i in range(1000):
... a = 'x'*i
... if len(a) is not i:
... print(i)
... break
...
257
Если бы кто-то мог объяснить, почему он работает до 256, я бы хотел добавить его сюда
РЕДАКТИРОВАТЬ еще раз
Это, вероятно, объясняет поведение.Я цитирую interjay из комментариев.
Это оптимизация в CPython: объекты для целых чисел в диапазоне от -1 до 256 предварительно распределяются, и каждый раз, когда встречается одно из этих значений, ему даетсятот же объект.Для других целых чисел каждый раз создается новый объект.Конечно, это детали реализации и могут меняться между версиями Python.