问题描述
我目前正在自学python 3,有一件事困扰着我:我的意思是我期望的一切,包括lambda。 但是,如何编写代码块?
例如,如何用python(2或3)编写以下简单程序代码:
( (lambda () (display "hello ") (display "world") (newline)) )
=> hello world
现在是python:
=> >>> lambda :print("hello") print("world");
1楼
以为你是这个意思,
>>> f = lambda : print("hello","world")
>>> f
<function <lambda> at 0x7faeca581d08>
>>> f()
hello world
2楼
这不是您编写Python的方式。 Lambda是仅用于非常简单功能的语法糖,并且只能包含单个表达式。 如果您想做其他事情,则必须编写一个函数。
def hello_world():
print("hello")
print("world")
请注意,这不是lambda的事实没有任何区别。
您仍然可以将hello_world
作为一流对象传递。
3楼
如果您真的想在lambda内对多个表达式进行排序,则可以通过从多个子表达式构造数据结构来“伪造”它。 Python将在构建数据结构时评估数据结构中的项目。 元组是使用的更有效的数据结构之一:
>>> f = lambda: (print('Hello ', end=''), print('World'))
>>> x = f()
Hello World
请注意, f返回一个元组,其中包含两个打印函数调用的返回值,每个调用函数均为None 。
>>> x
(None, None)
这可以按您期望的方式工作,因为Python保证按从左到右的顺序评估元组中的表达式,如下所述: