Python身份与平等

时间:2019-10-11 20:20:02

标签: python memory literals

据我所知,python中的is运算符仅在两个对象在内存中求值相同时才返回True,而==返回True时两个操作数值相等。

>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a is b
False
>>> a == b
True 

因此,上面的代码就是这样执行的。

>>> a = "Text"
>>> b = "Text"
>>> c = "".join(['T', 'e', 'x', 't'])
>>> a is b
True
>>> a is c
False
>>> a == c
True

这是怎么回事?我使用了id()函数来检查他们的地址,它为ab返回了完全相同的值,但是c返回了一些不同的值。为什么ab指向内存中的同一事物而c指向不同的事物?

还有一个额外的问题:python如何找到 string number 文字的值。我的意思是;不同程序的文字0, 1, 2, 3, 4, ...'a', 'b', 'c', 'd' ...的地址是否相同?在此先感谢您,如果使用了错误的术语,我们深感抱歉。

0 个答案:

没有答案