可能重复:
Python 中的三元条件运算符
我用 Java 编程已经有一段时间了,我在学校学习 Python,我记得在 Java 中你可以做一个布尔表达式
布尔值?(如果 boolean 为 true,则会发生这种情况):(如果 boolean 为 false,则会发生这种情况)
他们是在 Python 中执行上述 Java 代码的方法吗?上面的语句正确地称为什么?
可能重复:
Python 中的三元条件运算符
我用 Java 编程已经有一段时间了,我在学校学习 Python,我记得在 Java 中你可以做一个布尔表达式
布尔值?(如果 boolean 为 true,则会发生这种情况):(如果 boolean 为 false,则会发生这种情况)
他们是在 Python 中执行上述 Java 代码的方法吗?上面的语句正确地称为什么?
是的,使用条件表达式:
somevalue if oneexpression else othervalue
例子:
>>> 'foo' if True else 'bar'
'foo'
>>> 'foo' if False else 'bar'
'bar'
在引入这一点的 Python 2.5 之前,人们使用and
和or
表达式的组合来实现类似的结果:
expression and truevalue or falsevalue
但是如果truevalue
表达式本身的部分被评估为具有布尔值的东西False
(所以是 0 或 None 或任何长度为 0 的序列等),那么无论如何falsevalue
都会被选中。
Python:
x if condition else y
例子:
val = val() if callable(val) else val
greeting = ("Hi " + name) if name != "" else "Howdy pardner"
这通常被称为“三元运算符”,因为它具有三个操作数。但是,术语“三元运算符”适用于任何具有三个操作数的运算。碰巧大多数编程语言没有任何其他三元运算符,所以说“the”是明确的。但是,我将其称为if/else
运算符或条件表达式。
在 Python 中,由于and
andor
运算符的工作方式,您还可以在某些情况下将它们用于通常在 C 派生语言中使用三元运算符的事情:
# provide a default value if user doesn't enter one
name = raw_input("What is your name? ") or "Jude"
print "Hey", name, "don't make it bad."
# call x only if x is callable
callable(x) and x()
是的,你可以使用这个(更多的pythonic):
>>> "foo"'if condition else "bar"
或者,这个(更常见,但不推荐):
>>> condition and "foo" or "bar"