有没有使用python if/else(三元运算符)实现这个功能的方法:
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 现在将成为一个函数。如果您想在表达式中打印,则可以执行 print("abc") if condition else None。请注意,表达式的值始终为 None,但它可能会或可能不会打印“abc”,具体取决于 condition 的值。
您可能需要重新考虑您的编程风格。它可能会与表达式中发生的副作用混淆,例如打印。此外,在我看来,出于多种原因,Python 不是函数式编程的理想选择。例如:
- 没有适当的尾调用,因此您很容易出现堆栈溢出(或最大递归深度错误)。
- lambda 表达式中不能有语句。这包括 yield 语句,否则可用于减轻缺少尾调用的情况。
