python - 解释这个 lambda

标签 python lambda openerp

下面是一个 Python 字典(来自 OpenERP 应用程序),其中的字段通过 lambda 进行默认。我可以看到如何使用此模式,显然“active”是一个 bool 值,“level”是一个整数,“price”是一个 float 。

但是有人可以准确解释这是如何工作的吗?这里的“a”代表什么?

_defaults = {
    'active': lambda *a: False,
    'level': lambda *a: 1,
    'price': lambda *a: 1.0,
    }

最佳答案

*a 语法捕获任意数量的参数; lambda 接受 0 个或多个参数,并且无论如何都返回一个常量值。

本质上,这些 lambda 忽略传入的所有参数。

语法也可以用在函数中,还有一个关键字参数等价于**keywords的形式,产生一个映射。

快速演示:

>>> demo = lambda *a: a
>>> demo()
()
>>> demo(1, 2, 3)
(1, 2, 3)

demo 这里返回捕获的任何*a;一个包含 0 个或多个值的元组,这些值是调用的参数。

关于python - 解释这个 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19743727/

相关文章:

haskell - 为什么 Haskell 在函数组合后不接受参数?

python - 看不懂Python表达式

openerp - 将产品导入 odoo (openerp)

python - 字段 email_from 中的 odoo 电子邮件模板中的 "|safe"是什么

python - 计算每个用户每月的平均收入

python - 将包含 bytearray 的字符串转换为 uint16

python - 我在 Python 混合理解列表和 lambda 函数中不理解的行为

openerp - 查看错误 : Can't find field 'field name' in the following view parts composing the view of object model 'object name'

python - django 通用模板

python - 为使用 Opencv 2.3 的 c++ 类 boost Python 包装器