a==('a'或'b')"在Python中的含义是什么?
看看这段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
是真(也就是说它不是 None
、False
、空字符串 ""
、空元组 (,)
、空列表 []
或空字典 {}
),那么就返回 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' 不相等,所以返回的是假。