Python:False vs 0

时间:2014-12-11 19:52:48

标签: python int boolean

在PHP中,您使用===表示法来测试与TRUEFALSE不同的10

例如if FALSE == 0返回TRUEif FALSE === 0返回FALSE。因此,当在基数0中进行字符串搜索时,如果所讨论的子字符串的位置在开头是正确的,那么PHP 0可以区分FALSE

有没有办法在Python中执行此操作?

3 个答案:

答案 0 :(得分:16)

在Python中,

  • is运算符测试身份(False is False0 is not False)。

  • ==运算符,用于测试逻辑相等性(因此0 == False)。

从技术上讲,这些都不完全等同于PHP的===,它比较了Python中的逻辑相等和类型,而且是a == b and type(a) is type(b)

is==之间的其他一些差异:

可变类型文字

  • {} == {},但是{} is not {}(对于列表和其他可变类型也是如此)
  • 但是,如果是a = {},那么a is a(因为在这种情况下,它是对同一个实例的引用)

字符串

  • "a"*255 is not "a"*255",但在大多数实现中都是"a"*20 is "a"*20,因为Python处理字符串实习。但是,这种行为并不能得到保证,在这种情况下你可能不应该使用is"a"*255 == "a"*255并且几乎总是正确使用比较。

数字

  • 12345 is 12345但在大多数实现中12345 is not 12345 + 1 - 1同样如此。您几乎总是希望在这些情况下使用相等。

答案 1 :(得分:4)

if something is False:

是你应该做的

if something is None:

也有效

道德是使用is ...(虽然你应该永远something is 123457,或者simillar)

为什么你永远不应该使用整数和事情来看http://ideone.com/iKmWCn

答案 2 :(得分:0)

Python中x === y的严格等价物为type(x) is type(y) and x == y。你不是真的想这样做,因为Python是鸭子类型。如果一个对象具有适当的方法或属性,那么你不应该太担心它的实际类型。

如果要检查特定的唯一对象,例如(TrueFalseNone或类),则应使用is和{{1 }}。例如:is not