Python 如何将字符串与整数进行比较?

san*_*909 5 python equality

鉴于以下代码:

a = '1'
if a == 1:
    print 'yes'
else:
    print 'no'
Run Code Online (Sandbox Code Playgroud)

我们得到输出为no

Python 如何将字符串值与这里的 int 值进行比较 ( if a == 1)?在 C 中,这样的比较会产生错误,因为这是在比较不同的类型。

Mar*_*ers 6

Python 不是 C。与 C 不同,Python 支持任意类型之间的相等测试。

这里没有“如何”,字符串不支持对整数的相等测试,整数不支持对字符串的相等测试。所以Python回退到默认的身份测试行为,但对象不是同一个对象,所以结果是False

请参阅参考文档的值比较部分:

==相等比较(和)的默认行为!=基于对象的标识。因此,具有相同身份的实例的相等比较会导致相等,而具有不同身份的实例的相等比较会导致不平等。这种默认行为的动机是希望所有对象都应该是自反的(即x is y暗示x == y)。

如果您想将整数与包含数字的字符串进行比较,那么您需要将字符串转换为整数或将整数转换为字符串,然后进行比较。