有没有使用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 语句,否则可用于减轻缺少尾调用的情况。
关于Python 三元运算符(做某事,如果标志,否则做另一个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18376444/