给出以下代码:
a = '1'
if a == 1:
print 'yes'
else:
print 'no'
我们得到的输出为no
。
Python如何将字符串值与int(if a == 1
)进行比较?在C中,这样的比较会产生错误,因为这是比较不同的类型。
答案 0 :(得分:2)
Python不是C.与C不同,Python支持任意类型之间的相等测试。
没有'怎么'字符串不支持对整数进行相等性测试,整数不支持对字符串进行相等性测试。因此Python回退到默认的身份测试行为,但对象不是同一个对象,因此结果为False
。
请参阅参考文档的Value comparisons section:
相等性比较的默认行为(
==
和!=
)基于对象的标识。因此,具有相同身份的实例的相等比较导致相等,并且具有不同身份的实例的相等性比较导致不等式。这种默认行为的动机是希望所有对象都应该是自反的(即x is y
暗示x == y
)。
如果你想将整数与包含数字的字符串进行比较,那么你需要将字符串转换为整数或整数字符串,然后进行比较。