Python是vs ==

jb.*_*jb. 3 python operators

可能重复:
Python中的字符串比较:is = == 运算符
何时==不等于is运算符?(蟒蛇)

我仍然是Python的新手.我听到有人说使用is,不是==因为"这不是C".但我有一些代码x is 5,它没有按预期工作.

因此,遵循正确的Python/PEP样式,何时使用is以及何时使用==

Mar*_*ers 10

您应该==用来比较两个值.您应该使用is以查看两个名称是否绑定到同一对象.

您几乎从不使用,x is 5因为根据实现,可能会实现小整数.这可能会导致令人惊讶的结果:

>>> x = 256
>>> x is 256
True
>>> x = 257
>>> x is 257
False
Run Code Online (Sandbox Code Playgroud)

  • @Manny D:在你正在使用的Python实现中,为了提高效率,实际上是256或更少的数字.每次写入256时,都会获得*exact*相同的对象.每次你写257,你会得到一个新的,不同的对象,但当然具有相同的价值.但是您不应该依赖此行为,因为它可能会在将来的版本中发生变化. (2认同)