为什么是('a' in arr) in arr!= 'a' in arr in arr?
arr = [1, True, 'a', 2]
print(('a' in arr) in arr) # -> True
print('a' in arr in arr) # -> False
Run Code Online (Sandbox Code Playgroud)
Python 语言参考的 6.10 节讨论了比较运算符和比较链。in被视为比较运算符,因此与<等的行为相同。没有括号用于显式分组,x OP1 y OP2 z等效x OP1 y and y OP2 z于任何两个比较运算符。
这意味着
'a' in arr in arr
Run Code Online (Sandbox Code Playgroud)
没有括号,等价于
'a' in arr and arr in arr
Run Code Online (Sandbox Code Playgroud)
arr 不是自身的元素,所以表达式是 False.
括号禁用链接,所以
('a' in arr) in arr
Run Code Online (Sandbox Code Playgroud)
像任何其他嵌套表达式一样计算。'a' in arr被首先评估为值True,然后True in arr被评估为也产生True。
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |