关于python:如何在区分None和False时计算变量是None,False还是True

How to figure if a variable is None, False or True while distinguishing between None and False

假设我们有以下代码来检测文档的星级。如果星级评定为50.0,它将使用星级"指标=真",我们希望在这种情况下"做点什么",如果星级评定为10.0,它将使用星级"指标=假",我们希望在这种情况下"做点别的"。

1
2
3
4
5
stars_indicator = sentiment_indicator = None
if document[stars] == 50.:
   stars_indicator = True
elif document[stars] == 10.:
   stars_indicator = False

我们如何检查我们是应该"做些什么"还是"做些别的"?

检查是不是真的很简单

1
2
if stars_indicator:
   # do something

检查它是错误还是无错误的简单方法是

1
2
if not stars_indicator:
   # do something else

但是这样的话,if条件就不能区分这两个选项,如果stars_指示错误或者没有,它就会"做其他的事情"。


一个更好的方法是用is明确地检查错误或无:

1
if stars_indicator is None:


虽然其他人已经回答了如何检查您的变量是否为真、假或无,但我想指出,在您的代码片段中,如果您只是在没有星号标记的情况下工作,可能会更容易:

1
2
3
4
5
6
if document[stars] == 50.:
    # Do what you would do if stars_indicator was True
elif document[stars] == 10.:
    # Do what you would do if stars_indicator was False
else:
    # Do what you would do if stars_indicator was None

通过这种方式,您不需要将结果编码为一个变量,只需再次解释变量即可。当然,这都是基于您提供的代码片段。


这种问题的正确方法是使用isInstance()。

1
2
if isinstance(stars_indicator, bool) and not stars_indicator:
   # do something else

isInstance(stars_indicator,bool)将首先确保变量不是none,并且只会确保它是false。

这是我曾经遇到的一个问题,我想分享它的解决方案。