Оператор 'is' ведет себя неожиданно с не кэшированными целыми числами

Играя с интерпретатором 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" ведет себя неожиданно с целыми числами.

этоздесь не тот случай так как числа находятся вне этого диапазона ия делаю хочу оценить личность ине равенство.