首先,and关键字表示逻辑中的与运算,因此有以下最基本的特性:

>>> True and True
True
>>> True and False
False
>>> False and True
False
>>> False and False
False

从这里我们也可以看出,and关键字其实也是一个运算符,构成一个表达式,会有一个返回值。当然,python里也可以用and连接多个boolean值,当且仅当所有boolean值都为True的时候,表达式才会返回True。

在python中,不止有True和False关键字来表示boolean值。
在boolean上下文中,0、[]、()、{}和None,都表示False,其余值则表示True。
例如:

>>> if 0:
...    print('a')
... else:
...    print('b')
...
b
>>> if []:
...    print('a')
... else:
...    print('b')
...
b
>>> if (1, 2, 3):
...    print('a')
... else:
...    print('b')
...
a

因此,在and关键字的左右,不仅可以是True和False,也可以是各种变量,最终整个and表达式会返回一个值。
例如:

>>> 1 and 0
0
>>> 'a' and 'b'
b
>>> 1 and [] and ()
[]
>>> () and 0 and {} and None
()
>>> 1 and {'a': 100}
{'a': 100}

and关键字还有一个特点,被称为短路求值,即表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止。 所以,python中and表达式的返回值也会有这样一个特点:当所有值都为True时,返回最后一个值,当有False存在时,就返回第一个为False的值。这个规律从上面的例子中也得到了验证。

最后总结如下:

  1. and关键字表示逻辑中的与运算。
  2. and关键字构成一个表达式,有返回值。
  3. and关键字有短路求值特性,当所有值都为True时,返回最后一个值,当有False存在时,就返回第一个为False的值。