举个例子:
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
答案 0 :(得分:3)
条件表达式的所有路径都必须是可评估的。
在Python 2.7中,print
is a statement,而不是函数。因此,它不能被评估为表达式。
由于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
。