是否有使用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
答案 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不是理想的函数式编程,原因有很多。例如:
答案 2 :(得分:0)
from __future__ import print_function
print('abc') if flag else None