数据格式比较

时间:2017-10-14 11:08:46

标签: python python-2.7

请有人向我解释为什么cmdreq被视为不平等?另外,我怎样才能使它们相等?

cmd = 0x10
test1 = '\x10'
req = test1[0]
if(cmd is req):
    print "Equal"
else:
    print "Not Equal"

我正在使用python 2.7

2 个答案:

答案 0 :(得分:3)

cmd是一个整数。 req是一个字符串。这两个不相同,所以你的代码打印"不等于"。

你可以这样做:

if chr(cmd) == test1[0]:
    print "Equal"
else:
    print "Not Equal"

chr()将0-255范围内的整数转换为整数对应的单字节字符串。

另外,使用==来测试相等性,而不是is

你可以更简单地写这个:

print "Equal" if chr(cmd) == test1[0] else "Not Equal"

为了完整起见,您可以使用ord()test1[0]转换为整数,这是chr()的倒数:

print "Equal" if cmd == ord(test1[0]) else "Not Equal"

答案 1 :(得分:1)

关键字is不测试相等性。它测试身份。如果要检查字符串是否相等,只需使用==

在这种情况下,您还需要先将整数转换为字符串。

a is bid(a) == id(b)相同,并且来自id()的文档:

  

返回对象的“标识”。这是一个整数(或长整数),保证在该生命周期内该对象是唯一且恒定的。具有非重叠生存期的两个对象可能具有相同的id()值。

     

CPython实现细节:这是对象的地址   存储器中。