Difference between “if x” and “if x is not None”

后端 未结 5 1005
萌比男神i
萌比男神i 2020-12-04 23:32

It appears that \"if x\" is almost like short-hand for the longer \"if x is not None\" syntax. Are they functionally identical or are there cases where for a given value of

5条回答
  •  一生所求
    2020-12-05 00:12

    In the following cases:

    test = False 
    test = "" 
    test = 0
    test = 0.0 
    test = []
    test = () 
    test = {} 
    test = set()
    

    the if test will differ:

    if test: #False
    
    if test is not None: #True 
    

    This is the case because is tests for identity, meaning

    test is not None
    

    is equivalent to

    id(test) == id(None) #False
    

    therefore

    (test is not None) is (id(test) != id(None)) #True
    

提交回复
热议问题