首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么打印不能在lambda中工作?

为什么打印不能在lambda中工作?
EN

Stack Overflow用户
提问于 2010-06-04 08:58:27
回答 6查看 88.2K关注 0票数 170

为什么这个不起作用?

代码语言:javascript
复制
lambda: print "x"

这不是一个单独的陈述,还是其他的东西?文档似乎对lambda中允许的内容有点稀疏……

EN

回答 6

Stack Overflow用户

发布于 2011-05-25 21:24:10

在我使用它进行简单的存根输出的情况下,我使用以下代码:

代码语言:javascript
复制
fn = lambda x: sys.stdout.write(str(x) + "\n")

它工作得很完美。

票数 27
EN

Stack Overflow用户

发布于 2010-06-04 09:03:44

您所写的内容相当于

代码语言:javascript
复制
def anon():
    return print "x"

这也会导致一个SyntaxError,python不允许在2.xx中为print赋值;在python3中您可以这样说

代码语言:javascript
复制
lambda: print('hi')

它可以工作,因为他们已经将print更改为一个函数,而不是语句。

票数 25
EN

Stack Overflow用户

发布于 2010-06-04 09:06:57

lambda的主体必须是返回值的表达式。作为一条语句,print不会返回任何内容,甚至None也不会。同样,您不能将print的结果赋给一个变量:

代码语言:javascript
复制
>>> x = print "hello"
  File "<stdin>", line 1
    x = print "hello"
            ^
SyntaxError: invalid syntax

您也不能将变量赋值放在lambda中,因为赋值是语句:

代码语言:javascript
复制
>>> lambda y: (x = y)
  File "<stdin>", line 1
    lambda y: (x = y)
                 ^
SyntaxError: invalid syntax
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2970858

复制
相关文章

相似问题

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