我正在学习python,使用的是marklutz的优秀书籍。我在python中遇到这样一个语句:三元运算符实际上是:
if a:
b
else:
c
可以用两种方式书写:
b if a else c
:使用python和
((a and b) or c)
:使用等效但更复杂的and/or
组合
我发现第二种说法令人不安,因为它与我的直觉不符。我在交互式提示符上尝试了这两种语法,发现了b = 0.
的特殊情况的不同答案(假设b=0,a=4,c=20)
0 if 4 else 20
输出0
((4 and 0) or 20)
输出20
这两个表达式似乎与b
的所有truthy
值等价,但对b
的所有falsy
值不是等价的。在
我想知道,这里有什么我遗漏的吗。我的分析有错吗?为什么书上说这两种情况是等价的呢。请开导我粗俗的心灵。我是python新手。提前谢谢。在
笔者在这里的观点是不同的,应该加以考虑。让我试着用代码和内联注释来解释:
你应该改变输入并检查输出。但是,您直接更改输出并尝试检查输出,但这不起作用。所以,你的测试方法是错误的。 这里的输入是a。 这里的输出是b。 案例1: b=12个 a=1 c=20
^{pr2}$你说得对,第二种方法在大多数情况下都很好。在
来自python文档:
之后他们提到:
以下是参考资料: https://docs.python.org/3.3/faq/programming.html#is-there-an-equivalent-of-c-s-ternary-operator
为每个请求添加简短示例:
相关问题 更多 >
编程相关推荐