a==('a'或'b')"在Python中的含义是什么?

1 投票
4 回答
7665 浏览
提问于 2025-05-16 18:42

看看这段Python代码:

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

运行后会得到这个结果:

True
False

你能告诉我为什么会这样吗?

谢谢!

相关问题:

  • 暂无相关问题
暂无标签

4 个回答

0

当你有一个表达式像 'a' or 'b' 时,它会返回第一个不等于 False 的值。换句话说,在这两种情况下,这个表达式都会返回 'a'

我想你可以自己理解其他的部分,但第一个表达式是 True,因为你比较 'a' == 'a',而第二个表达式是 'b' == 'a'

0

('a' or 'b') 这个表达式总是会返回 'a',因为在布尔上下文中,'a' 被认为是 True(真)。

x or y 这个表达式会检查 x 的值,如果 x 是真(也就是说它不是 NoneFalse、空字符串 ""、空元组 (,)、空列表 [] 或空字典 {}),那么就返回 x 的值;如果 x 是假,那就返回 y 的值。

2

@rm-vanda说得对。

我觉得你想要的效果可以通过使用列表或元组来更好地实现:

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

简单来说,括号里的内容会先被计算。

比如说,"a" or "b" - "a" 是一个有效的值,所以它会直接返回自己。而 "b" 就不会被计算,因为一个非空的字符串总是被认为是有效的。

为了更好地理解这个,可以在命令行中单独运行一下这个表达式。

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

所以你最终得到的是 'a' == 'a' - 这是真的。

在第二个例子中,a 被设置为 'b',所以情况也是一样,只不过 'b' 和 'a' 不相等,所以返回的是假。

撰写回答