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_指示错误或者没有,它就会"做其他的事情"。
一个更好的方法是用
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。
这是我曾经遇到的一个问题,我想分享它的解决方案。