解释这个lambda

ard*_*igh 4 python lambda openerp

下面是一个Python字典(来自OpenERP应用程序),字段通过lambda默认.我可以看到如何使用这种模式,显然'active'是一个布尔值,'level'是一个整数,'price'是一个浮点数.

但有人可以解释这是如何工作的吗?什么是'a'代表在这里?

_defaults = {
    'active': lambda *a: False,
    'level': lambda *a: 1,
    'price': lambda *a: 1.0,
    }
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

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

从本质上讲,这些lambda会忽略传入的所有参数.

语法也可以在函数中使用,并且还有一个等价的关键字参数**keywords,从而产生映射.

快速演示:

>>> demo = lambda *a: a
>>> demo()
()
>>> demo(1, 2, 3)
(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

demo这里返回*a捕获的内容; 一个0或更多值的元组,它们是调用的参数.

  • @ardochhigh:因为你不能*叫*`False`; 如果将这些传递给需要函数或其他可调用函数的东西,则不能只传递一个值. (2认同)