为什么一些简短形式的条件在python中有效,有些则不然?

时间:2014-10-16 06:29:50

标签: python python-2.7 conditional-statements

举个例子:

 a = "foo" if True else "bar"

这样可以正常执行并且没有问题。 现在采取:

print("foo") if True else print("bar")

这会引发错误。

我假设第一个像三元运算符一样工作。有没有办法在不诉诸全长的情况下编写第二个语句:

if True:
    print("foo")
else:
    print("bar")

类似于Perl的东西

print("foo") if True

1 个答案:

答案 0 :(得分:3)

  1. 条件表达式的所有路径都必须是可评估的。

  2. 在Python 2.7中,print is a statement,而不是函数。因此,它不能被评估为表达式。

  3. 由于print语句违反第2点,因此无法使用。但你可以做到

    print "foo" if True else "bar"
    

    在Python 3.x中,print is a function,所以你可以像在问题中提到的那样写作

    print("foo") if True else print("bar")
    

    由于print是Python 3.x中的函数,因此函数调用的结果将是函数调用表达式的求值结果。您可以像这样检查

    print(print("foo") if True else print("bar"))
    # foo
    # None
    

    print函数没有显式返回任何内容。因此,默认情况下,它返回None。评估print("foo")的结果是None