python空值判断方式(ifxxx和ifxxxisNone的区别及说明)

 

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

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

 PyQt5 事件处理机制PyQt为事件处理提供了两种机制:高级的信号与槽机制,以及低级的事件处理机制。信号与槽可以说是对事件处理机制的高级封装。常见事件类型:键盘事件:按键按下和松开。鼠标事件:鼠标 ...