python - 在以下表达式中使用 lambda

标签 python lambda openerp

在开发OpenERP的过程中,我发现了如下一段代码

'app_date': lambda *a: time.strftime('%Y-%m-%d')

我知道 lambda 是什么。我的问题是为什么要使用 lambda?为什么不只是

'app_date': time.strftime('%Y-%m-%d')

最佳答案

'app_date': time.strftime('%Y-%m-%d') 将立即评估 time.strftime。通过将它包装在 lambda 中,它的执行被推迟到稍后(调用 lambda 的时间)。粗略地说,区别是“我定义这个的时候”和“我使用这个的时候”。看:

>>> d = {'a': time.time(), 'b': lambda: time.time()}
>>> d['a'], d['b']()
(1346913545.049, 1346913552.409)
>>> d['a'], d['b']()
(1346913545.049, 1346913554.518)
>>> d['a'], d['b']()
(1346913545.049, 1346913566.08)

我在每个 d['a']、d['b']() 之间留出一些时间。请注意 d['a'] 始终相同:它是我定义 d 的时间。 d['b'] 是一个函数。 d['b']()(带括号)调用该函数,该函数在每次调用时重新计算时间,因此每次使用时都不同。

另外,lambda 也没什么特别的。 Lambda 和其他函数一样。我也可以这样做:

def func():
    return time.time()
d = {'a': time.time(), 'b': func}

关于python - 在以下表达式中使用 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12294234/

相关文章:

javascript - ListView,FormView和PageView有什么区别?在JAVAScript中用于(ODOO | OpenERP)

python - Django - 重建没有变量之一的查询字符串

python - 如何在 plotly 散点图中添加图像而不是点(python)

python - 如何匹配某个人在不同时间段内的调查响应以形成面板数据集?

openerp - 通过自定义模块覆盖默认 View ?

openerp - 在模块安装上调用函数

python - 在python中访问实例变量

java - 使用 lambda 会阻碍类型变量的推断

c++ - 由 lambda 初始化的函数局部静态函数对象,线程安全与否?

c++ - 为什么在单独的线程中调用成员成员函数会导致不确定的行为?