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")

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

原文地址:https://blog.csdn.net/Urms_handsomeyu/article/details/103350227