Comparing True False confusion

前端 未结 3 1797
执笔经年
执笔经年 2020-12-19 05:57

I have some confusion over testing values that are assigned False, True

To check for True value, we can simply just

a = True
if (a):
<
相关标签:
3条回答
  • 2020-12-19 06:10

    use not:

    if not a:
        ....
        # If a is the empty value like '', [], (), {}, or 0, 0.0, ..., False
        # control flow also reach here.
    

    or is False:

    if a is False:
        ....
    
    0 讨论(0)
  • 2020-12-19 06:19

    To check for if a value is true:

    if a:
        pass
    

    To check if a value is not true:

    if not a:
        pass
    

    However, not a: is True (and true) for values other than False, eg. None, 0, and empty containers.

    If you want to check if a value is True or False (although you generally don't) try:

    if a is True:
        pass
    

    or

    if a is False:
        pass
    

    Edit: for checking if a value is True or False it seems you should use if isinstance(a, bool) and a, and if isinstance(a, bool) and not a

    0 讨论(0)
  • From the Python Style Guide:

    For sequences, (strings, lists, tuples), use the fact that empty sequences are false.

    Yes: if not seq:
         if seq:
    
    No: if len(seq)
        if not len(seq)
    

    [..]

    Don't compare boolean values to True or False using ==.

    Yes: if greeting:
    No: if greeting == True:
    Worse: if greeting is True:
    
    0 讨论(0)
提交回复
热议问题