当前位置: 首页 > 面试题库 >

为什么在lambda中无法打印?

弓方伟
2023-03-14
问题内容

为什么不起作用?

lambda: print "x"

这不是一个单一的声明,还是其他?该文档对于lambda允许的内容似乎有点稀疏…


问题答案:

一个lambda人的身体必须是一个 单一的表情 。在Python 2.x中,print是一条语句。但是,在Python
3中,它print是一个 函数函数应用程序是一个表达式,因此它将在lambda中工作)。如果使用的是最新的Python
2.x,则可以(并且应该,为了向前兼容:)使用向后移植的打印功能:

In [1324]: from __future__ import print_function

In [1325]: f = lambda x: print(x)

In [1326]: f("HI")
HI


 类似资料:
  • 问题内容: 以下Java代码无法编译: 编译器报告: 奇怪的是,标记为“ OK”的行可以正常编译,但是标记为“ Error”的行失败。它们看起来基本相同。 问题答案: 您的lambda需要与保持一致。如果您参考JLS#15.27.3(Lambda的类型): 如果满足以下所有条件,则lambda表达式与函数类型一致: […] 如果函数类型的结果为void,则lambda主体为语句表达式(第14.8节

  • 问题内容: 我试图理解为什么外部回报。 我注意到: 有人能解释一下这里发生的一切吗?谢谢! 问题答案: 该函数返回。您正在打印该返回值。 这是因为没有什么 要 回报; 它的工作是将参数转换为字符串后,将其写入文件对象(默认为)。但是Python中的所有表达式(包括调用)都产生一个值,因此在这种情况下就产生了。 您似乎将打印与返回此处混淆了。Python交互式解释器 也会 打印;如果不产生,它将打印

  • 问题内容: 我想知道当您尝试捕获StackOverflowError并提出以下方法时会发生什么: 现在我的问题是: 为什么此方法打印“ 4”? 我以为是因为在调用堆栈上需要3个段,但是我不知道3的来源。当您查看的源代码(和字节码)时,通常导致的方法调用要多于3(因此,调用堆栈上的3个段是不够的)。如果是由于优化而应用了Hotspot VM(方法内联),我想知道其他VM上的结果是否会有所不同。 编辑

  • 我知道使用lambda expression(LE)我们可以节省一些代码行,比如为函数接口创建对象。而且LE将更易读。但我确信这并不是提供该功能的主要原因。我在google上搜索,并在本文中找到了这段有趣的引用 在Java8之前,处理任何集合的元素都可以通过从集合中获取迭代器,然后迭代元素,然后处理每个元素来完成。如果需要并行处理这些元素,那么将由客户端代码完成。随着Java 8中Stream A

  • 问题内容: 我不明白为什么Java注释中没有继承关系,就像Java类一样。我认为这将非常有用。 例如:我想知道给定的注释是否为验证者。通过继承,我可以自反地浏览超类,以了解此注释是否扩展了。否则,我该如何实现? 那么,谁能给我这个设计决定的理由? 问题答案: 关于未采用这种方式进行设计的原因,你可以在JSR 175设计常见问题解答中找到答案,其中说: 你为什么不支持注释子类型化(一种注释类型扩展了

  • 问题内容: 我正在使用J2EE Eclipse Indigo,并且有三个这样的类声明: ClassC中的TYPE发生编译错误。它抱怨“枚举无法解析为一种类型”。同时也警告ClassA枚举,它抱怨: 我可以知道导致此代码错误的原因吗? 问题答案: 我有一个类似的问题: 枚举无法解析为类型 Eclipse 改为提供导入。 我去了 首选项-> Java-> Installed_JREs-> Execut

  • 我需要让 hbase 跑在 arm 上 而且想用 docker 所以我写了下面的 Dockerfile 我先跑在 x86 上,看看 ok 不 ok ,所以上面的 java home 是 amd64 的 但是不行 在我的虚拟机上,直接 JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 bash bin/hbase-daemon.sh start master 就