为什么我的IDE建议重写!= 0 to not 0

Pet*_*mit 3 python pycharm

默认情况下,我的python IDE PyCharm建议更改以下python行:

if variable != 0:
Run Code Online (Sandbox Code Playgroud)

if variable is not 0:
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?执行是否重要(即,对于任何边缘情况,这是否有所不同)?

Joh*_*ooy 7

这是一个错误.您不应该按身份测试整数.虽然它可能适用于小整数,但它只是一个实现细节.

如果您正在检查variable is False,那就没问题.也许IDE被语义绊倒了

  • @NoufalIbrahim,关于我在这里的Python版本,`100是99 + 1`评估为'True`,但是'1000是999 + 1`评估为'False`.`int`的实例就像任何其他对象一样有id.在CPython中,小整数被预先分配为优化,只有`那些'整数将与`is`一起工作,并且不保证其他Python实现 (6认同)
  • @NoufalIbrahim这进一步解释了它:http://docs.python.org/c-api/int.html#PyInt_FromLong (3认同)