Python - 检查数字0或False的任何方式

Ste*_*eve 1 python

如果我将变量设置为False,则将其读取为等于零.有什么方法可以检查变量是否实际为假或者数字是0.

就像是:

Spam = False

if Spam == False and not Spam == 0:
    do something
Run Code Online (Sandbox Code Playgroud)

我感觉这是不可能的; 但我想仔细检查一下.

旁注:将来,如果变量为零,分配"无"而不是"假"会更好吗?对于当前代码,我不想用try和excepts重写整个脚本,所以我将False更改为-1(对于这种情况不是一个可行的值).但是为了将来参考,我假设None方法更像Pythonic?

一如既往的帮助,如果需要更多的细节,请问.

Mar*_*ers 6

您可以通过测试身份来测试对象是否False单例值:

if Spam is False:
Run Code Online (Sandbox Code Playgroud)

你应该真的重构你的代码,而不必依赖这里的类型; None是一个更好的假y哨兵价值,是的.

一般来说,使用None哨兵意味着"没有价值集",或者你也应该支持None,使用一个独特的对象作为哨兵:

_sentinel = object()

# ...


if option is _sentinel:
    # no value set
Run Code Online (Sandbox Code Playgroud)