How to “test” NoneType in python?
我有一个方法,它有时返回一个非类型的值。那么我怎样才能质疑一个非类型的变量呢?例如,我需要使用if方法
1 2 | if not new: new = '#' |
我知道这是错误的方式,我希望你理解我的意思。
So how can I question a variable that is a NoneType?
使用
1 | if variable is None: |
为什么会这样?
由于
引用
The operators
is andis not test for object identity:x is y is true if and only ifx andy are the same object.x is not y yields the inverse truth value.
由于只有一个
从马嘴里听到
引用了python的编码风格指南-pep-008(由guido自己共同定义)。
Comparisons to singletons like
None should always be done withis oris not , never the equality operators.
1 2 | if variable is None: ... |
1 2 | if variable is not None: ... |
根据亚历克斯·霍尔的回答,也可以用
1 2 3 4 5 6 | >>> NoneType = type(None) >>> x = None >>> type(x) == NoneType True >>> isinstance(x, NoneType) True |
这对于像
正如亚伦希尔的命令所指出的:
Since you can't subclass
NoneType and sinceNone is a singleton,isinstance should not be used to detectNone - instead you should do as the accepted answer says, and useis None oris not None .
原始答案:
然而,最简单的方法是,除了豆蔻的答案之外,如果没有额外的行,可能是:
So how can I question a variable that is a NoneType? I need to use if method
使用
1 2 | if isinstance(x, type(None)): #do stuff |
附加信息您还可以在一个
1 | isinstance(x, (type(None), bytes)) |
Python 2.7:
1 2 | x = None isinstance(x, type(None)) |
或
1 | isinstance(None, type(None)) |
=真
希望这个例子对您有所帮助)
1 | print(type(None) # NoneType |
所以,您可以检查变量名的类型
1 2 3 4 5 6 | #Example name = 12 # name = None if type(name) != type(None): print(name) else: print("Can't find name") |
不确定这是否回答了问题。但我知道我花了一段时间才弄明白。我在浏览一个网站,突然作者的名字不在了。所以需要一个支票声明。
1 2 3 4 | if type(author) == type(None): my if body else: my else body |
在这种情况下,author可以是任何变量,