为什么可以';我在python中是否使用print-in-if三元运算符?

为什么可以';我在python中是否使用print-in-if三元运算符?,python,Python,为什么无效 print('true') if False else print('false') 但这个不是 def p(t): print(t) p('true') if False else p('false') 在Python 2中,print是一条语句,因此不能直接用于三元运算符 在Python 3中,print是一个函数,因此可以在三元运算符中使用 在Python2和Python3中,您可以将print(或任何控制语句等)包装到一个函数中,然后在三元运算符中使用该函数。正

为什么无效

print('true') if False else print('false')
但这个不是

def p(t):
    print(t)

p('true') if False else p('false')

在Python 2中,
print
是一条语句,因此不能直接用于三元运算符

在Python 3中,
print
是一个函数,因此可以在三元运算符中使用

在Python2和Python3中,您可以将
print
(或任何控制语句等)包装到一个函数中,然后在三元运算符中使用该函数。

正如(@NPE、@Blender等)所指出的,在Python2中,x
print
是一个语句,它是您问题的根源。但是,您不需要第二个
print
来使用示例中的三元运算符:

>>> print 'true' if False else 'false'
false

因为您使用的是Python 2,
print
不是Python 2中的函数。将“从未来导入打印”功能中添加的
添加到文件顶部。我知道你明白这一点,但你的答案令人困惑。并不是函数可以神奇地用在三元运算符中,而是表达式可以被使用。表达是OP应该学习的一个重要词汇。OP并不是试图在三元运算符中使用函数,而是一个函数应用程序。(是的,两者都是表达式,但OP只使用了第二个)是的,在这种情况下是正确的。但我概括了我的用例。我应该指出,它打印的一个“参数”,另一个是函数。但我明白你的意思,这很有道理!