Tag: identity

“是”运算符的行为意外与非caching整数

在和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在函数func声明时指向同一个int实例,但是相反,它们指向不在其外的对象。 这是为什么? 注意 :我了解了Python的“is”运算符中所描述的identity( is )和equality( == )运算之间的区别。 另外,我也意识到python正在执行的范围[-5, 256]的整数的caching,正如“is”中所描述的那样,整个操作符的行为意外 。 这不是这种情况,因为这些数字超出了这个范围, 我想要评估身份而不是平等。