请有人向我解释为什么cmd
和req
被视为不平等?另外,我怎样才能使它们相等?
cmd = 0x10
test1 = '\x10'
req = test1[0]
if(cmd is req):
print "Equal"
else:
print "Not Equal"
我正在使用python 2.7
。
答案 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 b
与id(a) == id(b)
相同,并且来自id()的文档:
返回对象的“标识”。这是一个整数(或长整数),保证在该生命周期内该对象是唯一且恒定的。具有非重叠生存期的两个对象可能具有相同的id()值。
CPython实现细节:这是对象的地址 存储器中。