Сегодня я узнал о ключевом слове is
в Python и пробовал следующее:
>>> x=2+2
>>> y=4
>>> x is y
True
Я начал пробовать is
с целыми числами, потому что знал, что ответ будет False
- так что я нашел результат очень неожиданным! Чтобы дать некоторый контекст, мой фон - это С++ и С#, где существует различие между типами значений и типами объектов. В Python, как я теперь понимаю, все является ссылочным типом.
Похоже, причина, по которой x is y
равна True
, такая же, как объясняемая в этом вопросе, Как используется ключевое слово 'is' в Python?, который относится к использованию is
со строками. То есть среда выполнения сохраняет память путем совместного использования или "интернирования" целых чисел так же, как и со строками, - это более подробно объясняется в ответах на вопрос: Python - это оператор ведет себя неожиданно с целыми числами Я нашел после моего первоначального сообщения.
Еще одна вещь, которую я нахожу удивительной, - это то, что значение, возвращаемое is
, зависит от реализации. Что касается моего основного вопроса. В упомянутом вопросе о реализации строк is
w.r.t было некоторое обсуждение того, когда следует использовать is
, при этом несколько пользователей говорят, что они (почти) никогда не будут использовать его. Поэтому мой вопрос: когда следует использовать ключевое слово is
? Каковы некоторые канонические примеры или общие правила?