如果a或b解释

Sen*_*nan 0 python syntax

a = None

b = 'Test'

if a is None or b is None:
    print('Test')
Run Code Online (Sandbox Code Playgroud)

这个版本显然有效但是:

if (a or b) is None:
   print('Test')
Run Code Online (Sandbox Code Playgroud)

预期会得到相同的结果,但评估为False,为什么?

Zag*_*ags 5

在Python中,or语句不仅仅返回True或者False返回它的第一个参数"truthy".

在您的代码中,评估时会发生以下情况(a or b) is None:

  1. None是假的,a是的None,所以a or b回报b.
  2. b不是None.
  3. (a or b) is None解决了False.