0

可能重复:
Python 中的三元条件运算符

我用 Java 编程已经有一段时间了,我在学校学习 Python,我记得在 Java 中你可以做一个布尔表达式

布尔值?(如果 boolean 为 true,则会发生这种情况):(如果 boolean 为 false,则会发生这种情况)

他们是在 Python 中执行上述 Java 代码的方法吗?上面的语句正确地称为什么?

4

3 回答 3

10

是的,使用条件表达式

somevalue if oneexpression else othervalue

例子:

>>> 'foo' if True else 'bar'
'foo'
>>> 'foo' if False else 'bar'
'bar'

在引入这一点的 Python 2.5 之前,人们使用andor表达式的组合来实现类似的结果:

expression and truevalue or falsevalue

但是如果truevalue表达式本身的部分被评估为具有布尔值的东西False(所以是 0 或 None 或任何长度为 0 的序列等),那么无论如何falsevalue都会被选中。

于 2012-10-01T19:01:39.473 回答
3

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 中,由于andandor运算符的工作方式,您还可以在某些情况下将它们用于通常在 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()
于 2012-10-01T19:04:17.067 回答
2

是的,你可以使用这个(更多的pythonic):

>>> "foo"'if condition else "bar"

或者,这个(更常见,但不推荐):

>>> condition and "foo" or "bar"
于 2012-10-01T19:04:11.670 回答