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