>>>b = "second" >>>1 and a or b >>>>'se-6ren">
gpt4 book ai didi

python - 潜入 python 和-或失败

转载 作者:太空狗 更新时间:2023-10-30 00:51:35 26 4
gpt4 key购买 nike

我在深入研究 python 时陷入了这个特殊的例子

示例 4.18。当 and-or 技巧失败时

>>>>a = ""
>>>>b = "second"
>>>1 and a or b
>>>>'second'

因为 a 是一个空字符串,Python 在 bool 上下文中认为它是假的,1 和 '' 计算为 '',并且然后 '' 或 'second' 评估为 'second'。哎呀!那不是你想要的。and-or 技巧 bool and a or b 不会像 C 表达式 bool 那样工作? a : b 当 a 在 a 中为假时 bool 上下文。

为什么它说这不是用户想要的,我的意思是 1 和“”的计算结果为 False,而“”或 b 的计算结果为“second”,这完全应该发生,我不明白为什么错了?我错过了什么吗?

最佳答案

不,您没有遗漏任何东西。

expr if cond else expr 内联条件在 PEP 308 中被引入 Python 2.5| ;在此之前,条件句必须是完整形式

if cond:
expr
else:
expr

但是,人们注意到 expr 和 cond 或 expr 有点像内联条件,只要第一个表达式的计算结果恰好为 bool 值 true。由于 Python 中的大多数事情都是正确的,因此这种语法通常会起作用——当然,有时也会失败。这实际上是添加“适当的”内联条件的动机。

关于python - 潜入 python 和-或失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10741922/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com