使用is运算符时出现异常的比较结果

阿育王莱拉

我正在尝试使用is运算符比较变量这就是我所做的

def get_no():
    return 1234

a = get_no()
b = 1234
c = 1234
print(a is 1234) #False
print(a is b)    #False
print(b is c)    #True

a is b预期False两者都指向不同的值。但是,为什么要b is c返回True为什么功能get_no()在这里引起差异?

著名的加金

Pythonis测试对象身份,而不是值相等。使用==比较值。

对于示例情况,这是因为Python如何处理某些值。例如,在我的系统上,的整数值5实际上是相同的对象,而实际上1234是不同的对象。您可以使用内置id功能对此进行验证

>>> a = 5
>>> b = 5
>>> a is b
True
>>> id(a)
25769987752
>>> id(b)
25769987752

>>> a = 1234
>>> b = 1234
>>> a is b
False
>>> id(a)
25770739272
>>> id(b)
25770390520

这可能是由于Python进行了一些内部优化,显然在不同环境之间可能会有所不同。

最重要的是,is即使出于某些原因,也不应将其用于价值比较,即使它工作得很好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用is运算符时出现异常的比较结果

来自分类Dev

比较条件时使用逻辑运算符AND或

来自分类Dev

使用sizeof运算符时的异常行为

来自分类Dev

使用strcpy时出现异常错误

来自分类Dev

使用strcpy时出现异常错误

来自分类Dev

使用通用数组时出现异常?

来自分类Dev

使用运算符重载时如何返回结果+

来自分类Dev

使用SQL ALL运算符时出现问题

来自分类Dev

使用%运算符时出现双精度错误

来自分类Dev

设计比较运算符时的StackOverflow

来自分类Dev

传递调用'createUser'的结果时出现异常

来自分类Dev

取反结果时,运算符重载中的C ++“无效比较器”错误

来自分类Dev

在packageVersion上使用比较运算符

来自分类Dev

正确使用比较运算符

来自分类Dev

在packageVersion上使用比较运算符

来自分类Dev

熊猫数据框-使用比较运算符(==)与idxmin()产生不同的结果

来自分类Dev

运算符NOT不会反转NULL比较的结果

来自分类Dev

使用Lumia Imaging SDK渲染图像时出现异常

来自分类Dev

在WinRT应用中使用SQLite时出现异常

来自分类Dev

使用NSPredicate格式化变量时出现异常

来自分类Dev

使用Cordova构建Android平台时出现异常

来自分类Dev

使用Excel工作簿时出现异常

来自分类Dev

Java使用tesseract ocr时出现异常

来自分类Dev

使用pip安装NumPy时出现异常错误

来自分类Dev

使用openCV导出openGL纹理时出现异常

来自分类Dev

当我使用pojo时,出现异常了吗?

来自分类Dev

使用openCV导出openGL纹理时出现异常

来自分类Dev

为什么在重新使用位图时总是出现异常?

来自分类Dev

使用CSOM创建Wiki页面时出现异常