Python ternary_operator(如果标志else做另一件事,就做一件事)



是否有使用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

在Python中,2.X print是一个语句,而在3.X print中是一个函数。

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

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

  • 没有合适的尾部调用,所以很容易得到堆栈溢出(或最大递归深度错误)
  • lambda表达式中不能有语句。这包括yield语句,否则这些语句可以用来减少尾部调用的缺乏

为什么不只是:

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

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

最新更新