在这种情况下,lambda的用途是什么

时间:2015-07-18 14:36:36

标签: python django lambda

我多次使用lambda。阅读本教程时django-autoslug

有两个例子:

slug = AutoSlugField(populate_from='title')

更复杂:

slug = AutoSlugField(populate_from=lambda instance: instance.title,
                         unique_with=['author__name', 'pub_date__month'],
                         slugify=lambda value: value.replace(' ','-'))

我对该行感兴趣:populate_from='title'populate_from=lambda instance: instance.title 有什么区别? 您能否提供一些教程(而不是文档),其中包含lambda

的示例

1 个答案:

答案 0 :(得分:0)

Python的lambda只是一种快速创建函数的单行方式。它等同于:

def slugFunction(someInstance):
    return someInstance.title

slug = AutoSlugField(populate_from=slugFunction)

你也可以制作一个与模型字段无关的slu ..例如,您可以使用一个纪元:

import time

slug = AutoSlugField(populate_from=lambda i: return str(time.time()))

(请注意,AutoSlugField将始终将模型实例传递给函数,因此您的函数必须使用一个参数,即使它不使用它。)

99%的时间,你可能会将slu base基于模型字段,因此有一个快捷方式。 AutoSlugField永远不会有足够的内置函数来处理其他用例,所以它允许你自己指定一个函数。

他们的文档令人困惑,因为他们以两种不同的方式说明了相同的用例。 - 正如L3viathan在上述评论中指出的那样,'title'lambda instance: instance.title之间没有区别。