При игре с интерпретатором Python я наткнулся на этот конфликтный случай относительно оператора is:
Если оценка выполняется в функции, она возвращает True, если она выполняется вне нее, возвращает False.
>>> def func():
...     a = 1000
...     b = 1000
...     return a is b
...
>>> a = 1000
>>> b = 1000
>>> a is b, func()
(False, True)
Так как оператор is оценивает id() для задействованных объектов, это означает, что a и b указывают на тот же экземпляр int, объявленный внутри функции func, но, наоборот, они указывают на другой объект, находящийся за его пределами.
Почему это так?
  Примечание. Я знаю разницу между идентичностью (is) и операциями равенства (==), как описано в Понимание Python "is" оператор. Кроме того, я также знаю о кэшировании, которое выполняется python для целых чисел в диапазоне [-5, 256], как описано в  "is" оператор ведет себя неожиданно с целыми числами.
Этот  здесь не относится, так как числа находятся за пределами этого диапазона, а  Я хочу оценить идентичность и  не.
