- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
>>>b = "second" >>>1 and a or b >>>>'se-6ren">
我在深入研究 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/
我在深入研究 python 时陷入了这个特殊的例子 示例 4.18。当 and-or 技巧失败时 >>>>a = "" >>>>b = "second" >>>1 and a or b >>>>'se
我是一名优秀的程序员,十分优秀!