In python, why 'is' is preferred over '==' for checking if object in None
本问题已经有最佳答案,请猛点这里访问。
如果我写这个:
1 2 | if x == None: x = 1 |
我的Pycharm编辑器一直建议我应该使用"is"而不是"==":
1 2 | if x is None: x = 1 |
对于任何其他平等检查,Pycharm不建议使用"is",例如:
1 2 | if x == 2: x = 1 |
为什么在检查对象是否为
为什么只对
因为
在对单个对象进行测试时,
如果您的
该钩子还可以使自定义类型声明自己等于
1 2 3 | class Devious(object): def __eq__(self, other): return other is None |
现在你的
例如,有时需要允许
1 2 3 | def foo(arg1, optional=None): if optional is None: # no value given for optional |
但是如果您希望
1 2 3 4 5 | _sentinel = object() def foo(arg1, optional=_sentinel): if optional is _sentinel: # no value given for optional |
现在您可以使用