Python处的"a==('a' or 'b')"是什么意思?

What is the meaning of "a==('a' or 'b')" at Python?

在 Python 查看这段代码:

a='a'
print(a==('a' or 'b'))
a='b'
print(a==('a' or 'b'))

输出将是:

True
False

你能解释一下为什么吗?

谢谢!

为了分解它,首先评估括号。 所以,"a" or "b" - "a" 是真实的并且 returns 本身。 "b" 永远不会被评估,因为非空字符串总是真实的。

为了更好地了解这一点,运行 它本身在提示中

>>> ('a' or 'b') 
'a'

因此你最终得到 'a' == 'a' - 这是真的

在第二个例子中,a 被设置为 'b' 所以同样的事情发生,只是 'b' ≠ 'a' 所以它 returns false

当你有像 'a' or 'b' 这样的表达式时,它将 return 第一个不是 False 的值。也就是说,在这两种情况下,表达式都将 return 'a'.

我想你可以自己算出其余部分,但第一个是 True 因为你等同于 'a' == 'a',第二个是 'b' == 'a'.

('a' or 'b') 将始终解析为 'a',因为 'a' 在布尔上下文中解析为 True

x or y returns x 的值如果 x 为真(= NoneFalse、[=19 的不同=], (,), []{}), 否则 returns y.

的值

@rm-vanda 是正确的。

我相信使用列表或元组可以更好地找到您期望的行为:

>>> a = "b"
>>> a in ["a", "b"]
True