Python:为什么通过str()将int转为字符串时字符串没有被内联?
a = "123"
b = "12" + "3"
c = str(100+20+3)
print(a is b, b is c)
为什么在第二种情况下输出会是‘False’呢?
2 个回答
-1
在Python中,is
运算符被称为身份运算符。Python解释器会给计算机内存中的每个对象分配一个独特的识别号码(id
)。如果两个对象的id()
相同,is
运算符就会返回真;如果不同,则返回假。所以,is
运算符用来检查两个变量是否指向同一个对象,而不是检查两个变量的值是否相同。
举个例子
print("a:", a, type(a), id(a), a is b, a is c)
print("b:", b, type(b), id(b), b is a, b is c)
print("c:", c, type(c), id(c), c is a, c is a) # notice the difference in id(c)
要检查两个值是否相同,可以使用==
运算符。
0
is
操作符的作用是判断两个变量是否指向同一个对象。只有在它们被明确设置为指向同一个对象的情况下,这种判断才是有保证的。
>>> a = "random string"
>>> b = a
>>> a is b
True
还有其他情况,Python 可能会发现两个没有关系的变量指向同一个值,并且通过这个测试;但这并不是有保证的,只是一个实现细节,不能也不应该依赖于它。
>>> c = 1
>>> d = 1
>>> c is d
True # or not