Python:为什么通过str()将int转为字符串时字符串没有被内联?

-1 投票
2 回答
60 浏览
提问于 2025-04-12 04:51
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

撰写回答