python空值判断总结(if xxx 和if xxx is None的区别)
if xxx 和if xxx is None的区别
一、 if xxx
-
None,’’,0,[],{},() ,False都被判断为空值(not xxx等价)
如下代码输出所示,if __name__ == '__main__': print("---not None == (not '') == (not 0) == (not []) == (not {}) == (not ()) == (not False)---") print(not None == (not '') == (not 0) == (not []) == (not {}) == (not ()) == (not False))
输出
---not None == (not '') == (not 0) == (not []) == (not {}) == (not ()) == (not False)--- True
-
if xxx
如下代码输出所示,
if __name__ == '__main__': print("---output a,b---") a = [] b = None print("a=[]") print("b=None") print("--- if x") if a: print("a") else: print("None") if b: print("b") else: print("None")
输出
---output a,b--- a=[] b=None --- if x None None
结论:将空列表换成上述的其他空类型,结果一样。如果需要过滤None值和空对象时(如[],{},''
等),可使用这种写法
二、 if xxx is None
该写法可将None和其他空值对象区分开来
如下代码输出所示:
if __name__ == '__main__':
a = []
b = None
print("a=[]")
print("b=None")
print("--- is None")
if a is None:
print("None")
else:
print("a")
if b is None:
print("None")
else:
print("b")
输出
---output a,b---
a=[]
b=None
--- is None
a
None
结论:需要区分[],{},'',()
等空值对象与None的区别时时可使用这种写法
贴下简单的测试代码
if __name__ == '__main__':
print("---not None == (not '') == (not 0) == (not []) == (not {}) == (not ()) == (not False)---")
print(not None == (not '') == (not 0) == (not []) == (not {}) == (not ()) == (not False))
print("---output a,b---")
a = []
b = None
print("a=[]")
print("b=None")
print("--- if x")
if a:
print("a")
else:
print("None")
if b:
print("b")
else:
print("None")
print("--- is None")
if a is None:
print("None")
else:
print("a")
if b is None:
print("None")
else:
print("b")
print("--- not")
if not a:
print("None")
else:
print("a")
if not b:
print("None")
else:
print("b")
print("--- is not None")
if a is not None:
print("a")
else:
print("None")
if b is not None:
print("B")
else:
print("None")