Python: if not val, vs if val is None

前端 未结 1 1884
野性不改
野性不改 2020-12-23 06:51

I\'ve always coded in the style of if not value, however, a few guides have brought to my attention that while this style works, it seems to have 2 potential pr

相关标签:
1条回答
  • 2020-12-23 07:24

    Use a comparison to None if that's what you want. Use "if not value" if you just want to check if the value is considered false (empty list, none, false).

    I find "if not value" to be cleaner looking and Pythonic.

    Also, be careful with lists. You should not use is when comparing for an empty list. If you know you're getting a list, use if <list> to check if it has any contents (or len()). Try typing this into the interpreter:

    >>> a = []
    >>> a is []
    False
    

    This is because the temporary list you just made has a different address in memory than the one stored at 'a'. You don't see this with None, False, or True because these are all values that are singletons (they all refer to the same section of memory) so using the 'is' keyword works.

    You'll also find that CPython interns strings so the following works.

    >>> 'a' is 'a'
    True
    

    You should not rely on this. It is an implementation detail and this is not specified to work with every version of Python.

    0 讨论(0)
提交回复
热议问题