如何在区分None和False时确定变量是None,False还是True

时间:2017-10-02 07:15:24

标签: python if-statement boolean

我们假设我们有以下代码来检测文档的星级。如果星级评分是50.0,它会使用stars_indicator = True表示它,我们希望做一些事情'在这种情况下,如果星级评分为10.0,则使用stars_indicator = False指示它,我们希望做其他事情'在这种情况下。

stars_indicator = sentiment_indicator = None
if document[stars] == 50.:
   stars_indicator = True
elif document[stars] == 10.:
   stars_indicator = False

我们如何检查是否应该做某事'或者'做别的事情'?

检查它是否真实

if stars_indicator:
   # do something

检查是否为假或无效的简单方法

if not stars_indicator:
   # do something else

但是通过这种方式,if条件不会区分这两个选项,并且会做出其他事情'如果stars_indicator为False或None。

3 个答案:

答案 0 :(得分:6)

更好的方法是使用is明确检查False或None:

if stars_indicator is None:

答案 1 :(得分:1)

虽然其他人已经回答了如何检查您的变量是True,False还是None,但我想指出,如果您只是在没有Stars_indicator的情况下工作,那么在您的代码段中可能会更容易:

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

通过这种方式,您无需在变量中对结果进行编码,只需再次解释变量即可。当然,这完全取决于您提供的代码段。

答案 2 :(得分:-1)

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

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

isinstance(stars_indicator,bool)将首先确保变量不是None,并且只确保变量为False。

这是我遇到的一个问题,并希望分享其解决方案。