搜索时,我注意到id()
函数返回一个整数,并保证对象的唯一性和常量。你知道吗
当比较两个不同的对象得到结果时,哪一个可能允许这些不同的结果??你知道吗
我在一本电子书中看到一个例子,比较id(Car()) == id (Car())
返回False
,但运行相同的代码时返回True
班级汽车.py你知道吗
class Car:
pass
代码处于空闲状态
>>> from Car import Car
>>> ferrari = Car()
>>> lamborghini = Car()
>>> id(lamborghini) == id(ferrari)
False
>>> id(Car()) == id(Car())
True
如果你想知道为什么
id(ferrari) == id(lamborghini)
是假的,而id(Car()) == id(Car())
是真的。这是因为当你说ferrari = Car()
时,Python会根据Car结构生成一个新的对象。所以ferrari
是一个新对象,只有ferrari
才有唯一的id。你知道吗在
id(Car()) == id(Car())
中,真正的评估来自这样一个事实:Car
对象不在id()
调用之外。你知道吗我希望这有帮助!你知道吗
任何对象的
id
都应该是唯一的,因此id(Car()) == id(Car())
似乎应该是False
,但它的计算结果是True
。但是,对象的id
只保证在该对象的生存期内是唯一的。因为这些Car
对象是暂时的,所以它们的持续时间只够传递给id()
然后被垃圾收集。Python正在计算==
的一边、垃圾收集,然后计算另一边。在这个过程中,id
会被每个Car()
对象重用。你知道吗有关详细说明,请参见abarnert's answer到Why is the id of a Python class not unique when called quickly?
根据文件:
id(object):返回对象的“标识”。这是一个整数(或长整数),该整数在对象的生存期内保证是唯一的和常量。你知道吗
您正在创建类
Car
的两个不同实例,即ferrari
和lamborghini
,因此它们的标识符是不同的。你知道吗相关问题 更多 >
编程相关推荐