有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Python布尔语句

Possible Duplicate:
Ternary conditional operator in Python

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

boolean ? (if boolean is true this happens) : (if boolean is false this happens)

它们是用Python编写上述Java代码的一种方法吗?那么,上述说法的正确名称是什么


共 (3) 个答案

  1. # 1 楼答案

    是的,使用conditional expression

    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或无或任何长度为0的序列,等等),那么falsevalue将被挑选无论如何

  2. # 2 楼答案

    是的,你可以用这个(更像Python):

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

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

    >>> condition and "foo" or "bar"
    
  3. # 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中,由于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()