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
为真(= None
、False
、[=19 的不同=], (,)
, []
或 {}
), 否则 returns y
.
的值
@rm-vanda 是正确的。
我相信使用列表或元组可以更好地找到您期望的行为:
>>> a = "b"
>>> a in ["a", "b"]
True
在 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
为真(= None
、False
、[=19 的不同=], (,)
, []
或 {}
), 否则 returns y
.
@rm-vanda 是正确的。
我相信使用列表或元组可以更好地找到您期望的行为:
>>> a = "b"
>>> a in ["a", "b"]
True