为什么我不能在python中使用print in if三元运算符?

Fer*_*spo 6 python

为什么这是无效的

print('true') if False else print('false')
Run Code Online (Sandbox Code Playgroud)

但这个不是

def p(t):
    print(t)

p('true') if False else p('false')
Run Code Online (Sandbox Code Playgroud)

mdm*_*dml 9

正如已经指出的那样(@ NPE,@ Blender和其他人),在Python2.x中print是一个声明,它是您问题的根源.但是,您不需要第二个print在示例中使用三元运算符:

>>> print 'true' if False else 'false'
false
Run Code Online (Sandbox Code Playgroud)


NPE*_*NPE 5

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

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

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

  • 我知道你明白这一点,但你的回答令人困惑。并不是说*函数*可以神奇地用在三元运算符中,而是可以使用**表达式**。**表达式**是OP应该学习的重要词汇。并且OP并没有尝试在三元运算符中使用*函数*,而是尝试使用*函数应用程序*。(是的,两者都是表达式,但OP只使用了第二个) (3认同)