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

后端 未结 5 1007
萌比男神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:29

    if x:
        # Evaluates for any defined non-False value of x
    if not x:
        # Evaluates for any defined False value of x
    if x is None:
        # Evaluates for any instances of None
    

    None is its own type, which happens to be False. "if not x" evaluates if x = None, only because None is False.

    There aren't any subtle differences that I know of but there are exact methods to test for use for positivity/negativity in exact situations. Mixing them can work in some situations, but can lead to problems if they're not understood.

    if x is True:
        # Use for checking for literal instances of True
    if x is False:
        # Use for checking for literal instances of False
    if x is None:
        # Use for checking for literal instances of None
    if x:
        # Use for checking for non-negative values
    if not x:
        # Use for checking for negative values
        # 0, "", None, False, [], (), {} are negative, all others are True
    

提交回复
热议问题