2016-11-03 118 views
2

考虑下面的代码:Python如何将字符串与整数进行比较?

a = '1' 
if a == 1: 
    print 'yes' 
else: 
    print 'no' 

我们得到输出no

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

回答

2

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

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

参见参考文档的Value comparisons section

是否相等的比较(==!=)的默认行为是基于所述对象的身份。因此,具有相同身份的实例的平等比较导致平等,并且具有不同身份的实例的平等比较导致不平等。这种默认行为的动机是希望所有对象都应该具有反身性(即x is y意味着x == y)。

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

+0

出于好奇,这与其他有强制类型的行为有什么区别: '3 is 3.0 == False' but'(3 == 3.0)== True'(我不建议字符串应该被强制,但我更多地询问引用中的最后一句) – brianpck

+0

@brianpck:这是一个*链式比较*,与'3是3.0和3.0 == False'是一样的。第一个表达式是**不是与第二个表达式相同。 –

+0

@brianpck:看[为什么表达式0 <0 == 0在Python中返回False?](// stackoverflow.com/q/6074018) –

相关问题