当我尝试时,我正在做一些测试:
len(pin) == (4 or 6)
一半的测试失败了。
但是:
(len(pin) == 4 or len(pin) == 6)
所有测试都通过了。
我无法理解这两者之间的区别。
pin通常是1234
或12345
之类的数字。
答案 0 :(得分:2)
这是因为根据优先规则,在你的第一个条件中首先评估右手边的表达,即
len(pin) == (4 or 6)
此处,首先评估(4 or 6)
并返回4(或某些语言中为true)。现在,只有那些情况在length
实际为4的情况下返回true。
你的第二个条件按预期工作,因为它将长度分别比较为4和6,然后在两个布尔值上都应用or
。