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