多次重复`in`关键字

Rug*_*rra 25 python

我错误地in在表达式中使用了多个关键字,但代码仍然有效.

的意义是什么:

"a" in "bar" in "foo"   # in ... ?
Run Code Online (Sandbox Code Playgroud)

天真地我认为这相当于("a" in "bar") in "foo""a" in ("bar" in "foo")但事实并非如此,因为两者都无效.我在python2或3中得到了相同的行为.

jam*_*lin 40

in被认为是一个比较运算符,并从Python的文档中为它们:

比较可以任意链接,例如,x < y <= z等同于x < y and y <= z,除了y仅评估一次(但在两种情况下z都没有被评估,当x < y发现是假的时).

形式上,如果a,b,c,...,y,z是表达式而op1,op2,...,opN是比较运算符,则a op1 b op2 c ... y opN z等效于a op1 b and b op2 c and ... y opN z,除了每个表达式最多被计算一次.