我从潜入python中坚持这个特殊的例子
例4.18.当and和或Trick失败时
>>>>a = ""
>>>>b = "second"
>>>1 and a or b
>>>>'second'
Run Code Online (Sandbox Code Playgroud)
由于a是一个空字符串,Python在布尔上下文中认为是假,1和''评估为'',然后''或'second'评估为'second'.哎呀!这不是你想要的.and-or trick,bool和a或b,不会像C表达式bool一样工作?a:b当布尔上下文中的a为false时.
为什么它说它不是用户想要的,我的意思是1和""将评估为False,而""或b将评估为"秒",这完全是应该发生的事情,我不明白为什么它错了?我错过了什么吗?
不,你并没有错过什么。
内联条件语句在PEP 308expr if cond else expr中被引入到 Python 2.5 中;在此之前,条件语句必须是完整形式
if cond:
expr
else:
expr
Run Code Online (Sandbox Code Playgroud)
然而,人们注意到,expr and cond or expr只要第一个表达式恰好计算为布尔值 true,就可以作为内联条件。由于 Python 中的大多数内容都是正确的,因此这种语法通常会起作用——当然,有时也会失败。这实际上是添加“适当的”内联条件的动机。
| 归档时间: |
|
| 查看次数: |
584 次 |
| 最近记录: |