string,`is`在python中是如何处理基元类型的?

dpiehjr4  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(277)

此问题已在此处找到答案

“==”和“是”之间有区别吗((14个答案)
“is”运算符对整数的行为异常(11个答案)
python是字符串[duplicate]的运算符行为(1个答案)
两天前关门了。
我的理解是,如果所有原语类型的值相等,那么它们在引用上是相等的。
对于整数,下面的示例似乎就是这种情况:

v1 = 2
v2 = 2
v1 is v2 # prints True

对于布尔型,下面的示例似乎也是如此:

v1 = False
v2 = False
v1 is v2 # prints True

对于字符串,它开始变得有点混乱。以下示例遵循以下步骤:

v1 = 'testtest'
v2 = 'testtest'
v1 is v2 # prints True

但是,只要我在字符串中添加空格,它就会失败:

v1 = 'test test'
v2 = 'test test'
v1 is v2 # prints False

使用浮点数时,模式根本不存在:

v1 = 2.0
v2 = 2.0
v1 is v2 # prints False

除了添加空格外,为什么字符串遵循规则?为什么浮动根本不遵循规则?感谢您的帮助。

b5buobof

b5buobof1#

对于整数,下面的示例似乎就是这种情况:

v1 = 2
v2 = 2
v1 is v2 # prints True

你被实现细节宠坏了,这使得某些整数的行为方式,考虑反例:

t1 = 1000000
t2 = 1000000
print(t1 is t2)  # False

相关问题