Python三元运算符(如果其他标志执行另一个操作)

时间:2013-08-22 09:23:39

标签: python if-statement

是否有使用python if / else(ternary_operator)来实现此功能的方法:

flag = True # or False
if flag:
    print 'abc'
else:
    pass

我尝试使用:

print 'abc' if flag else ''

但如果flag == False,则会打印一个空白行。这是因为:

print 'abc' if flag else '' == print ('abc' if flag else '')

如果flag == False不使用;,有没有办法可以不打印

提前致谢。


顺便说一下,我尝试使用lambda,但是没有成功,这里是我的代码:

a = lambda x: x if False else None
print a(1)

结果:

>> python a.py
None

3 个答案:

答案 0 :(得分:3)

为什么不呢:

if flag:
    print "abc"
else:
    # do something else

答案 1 :(得分:3)

在Python 2.X中,print是一个声明,而在3.X中则是一个函数。

您可以执行from __future__ import print_function,现在打印将成为一项功能。如果要在表达式中打印,则可以执行print("abc") if condition else None。请注意,表达式的值始终为None,但它可能会也可能不会打印“abc”,具体取决于condition的值。

您可能想重新考虑您的编程风格。它可能会混淆副作用,如打印,在表达式中发生。此外,在我看来,Python不是理想的函数式编程,原因有很多。例如:

  • 没有正确的尾调用,因此您很容易得到堆栈溢出(或最大递归深度错误)。
  • 你不能在lambda表达式中有语句。这包括yield语句,否则可以用来缓解尾调用的不足。

答案 2 :(得分:0)

from __future__ import print_function
print('abc') if flag else None