'=='运算符在python中无法正常工作

时间:2012-12-07 06:00:56

标签: python python-2.7

以下代码在我的脚本中表现不正确:

from ctypes import *
base_addr = c_uint64(0)
base_addr_temp = c_uint64(0)
print base_addr
print base_addr_temp
if(base_addr == base_addr_temp):
    print "val"

我得到的输出:

  

c_ulong(0L)

     

c_ulong(0L)

我正在使用python 2.7.3版本。

2 个答案:

答案 0 :(得分:5)

我认为因为这些是对象,你必须按值比较它们:

base_addr.value == base_addr_temp.value

自从我完成任何Python以来已经有一段时间了,但在许多语言中,如果两个对象实际引用相同的对象(即引用内存中的相同位置),则它们只被视为“相等”。

答案 1 :(得分:2)

您的比较是在两个对象(“base_addr”和“base_addr_temp”)的地址之间,而不是两个对象的值(均为0L)之间

奇怪的是,在windows 2.7.3 base_addr。 str ()返回'c_ulonglong(0L)',这与你看到的不一样 - 但这不会改变你比较的事实数据位置而不是值。