首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python ternary_operator (做

Python ternary_operator (做
EN

Stack Overflow用户
提问于 2013-08-22 09:23:39
回答 3查看 2.6K关注 0票数 2

是否使用python /else (ternary_operator)实现此功能:

代码语言:javascript
复制
flag = True # or False
if flag:
    print 'abc'
else:
    pass

我试着用:

代码语言:javascript
复制
print 'abc' if flag else ''

但是,如果flag == False,则将打印一个空行。因为:

print 'abc' if flag else '' == print ('abc' if flag else '')

如果不使用;,有什么方法可以使flag == False不打印任何;

提前谢谢。

顺便说一句,我尝试过使用lambda,但没有成功,这里是我的代码:

代码语言:javascript
复制
a = lambda x: x if False else None
print a(1)

结果:

代码语言:javascript
复制
>> python a.py
None
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-22 09:34:16

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

您可以做from __future__ import print_function和打印现在将是一个函数。如果要在表达式中打印,则可以执行print("abc") if condition else None操作。请注意,表达式的值始终为None,但它可能打印或不打印"abc“,这取决于condition的值。

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

  • 没有正确的尾调用,因此很容易得到堆栈溢出(或最大递归深度错误)。
  • 在lambda表达式中不能有语句。这包括收益率语句,否则这些语句可以用来缓解尾调用的不足。
票数 3
EN

Stack Overflow用户

发布于 2013-08-22 09:24:54

为什么不只是:

代码语言:javascript
复制
if flag:
    print "abc"
else:
    # do something else
票数 3
EN

Stack Overflow用户

发布于 2013-08-22 09:41:02

代码语言:javascript
复制
from __future__ import print_function
print('abc') if flag else None
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18376444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档