我已经用Java编程了很长一段时间,我在学校学习Python,我记得在Java中你可以做一个布尔表达式
布尔值? (如果boolean为true,则会发生这种情况):(如果boolean为false,则会发生这种情况)
他们是否可以在Python中使用上述Java代码?上面的陈述恰当地称为什么?
答案 0 :(得分:10)
是的,请使用conditional expression:
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的序列等),那么{{1}无论如何都会选择 。
答案 1 :(得分: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中,由于and
和or
运算符的工作方式,您也可以在某些情况下使用它们来处理您在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()
答案 2 :(得分:2)
是的,你可以使用它(更pythonic):
>>> "foo"'if condition else "bar"
或者,这(更常见,但不推荐):
>>> condition and "foo" or "bar"