首页 > 解决方案 > 了解匿名函数 lambda 的返回类型

问题描述

我试图了解如何使用 lambda 函数。

def adder_func(a, b):
    return a + b


print(adder_func(4, 5))

# trying with lambda
print(list(lambda a, b: a + b))

尝试使用 lambda 作为 adder_function 时,为什么无法打印结果?

输出/输出:

9
Traceback (most recent call last):
  File "C:\Users\redsuren\PycharmProjects\py_charm_tutorial_amigoscode\lambda_adder.py", line 7, in <module>
    print(list(lambda a, b: a + b))
TypeError: 'function' object is not iterable

Process finished with exit code 1

并且,如果关键字“list”被删除并尝试打印返回值,它会给我一些 hexa_value,这个值代表什么?

print(lambda a, b: a + b)

输出/输出:

<function <lambda> at 0x0000019440B5E0D0>

标签: python

解决方案


好像你正在尝试这样做

adder_func = lambda a, b: a + b
print(adder_func(4, 5))

或者this,它定义了函数,然后在同一行传递参数......你不需list()要这样做

a = 4
b = 5
print((lambda a, b: a + b)(a, b))

如您所见,打印函数对象并不是那么有用,并且该list()函数接受可迭代对象,而函数对象则不是(不要与可迭代函数或生成器对象的返回值混淆),例如

def adder_func(a, b):
    yield a + b
print(adder_func)  # <function adder_func at 0x1019c3b80>
print(adder_func(4, 5))  # <generator object adder_func at 0x101996200>
print(list(adder_func(4, 5)))  # [9]

推荐阅读