python - 了解匿名函数 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>
解决方案
好像你正在尝试这样做
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]
推荐阅读
- javascript - 解析 html 字符串并在每个标题之前附加新的 div
- authentication - EMV 在 SDA/DDA/CDA 之间选择加密方法
- tsql - 为不同的日期字段添加参数切换
- java - 通过 pyspark 流式传输数据时出现 UnsupportedOperationException
- c++ - 从打印行收集输入
- javascript - javascript 文件中的 SQL 函数
- python - 仅使用 Python 写入 JSON 对象的特定部分
- c# - 添加另一个 json 填充时,ConfigurationBuilder 不会覆盖节点
- r - 在R中绘制李克特变量的堆积条形图
- flutter - 文本溢出不适用于多余的行