如何在Beaker中将变量传递给createfunc

时间:2016-04-06 17:06:34

标签: python parameters closures beaker

在Beaker文档中,他们谈到不在createfunc调用中直接传递参数,而是使用闭包。

  

创建函数不能接受任何参数,因为它不会被任何参数调用。影响创建值的选项可以通过在创建函数上使用闭包范围传递:

我可以在闭包中找到的所有示例和文档都提示嵌入函数调用,第一个接收变量。在这种情况下,我不理解如何编写闭包,因为它不是函数,而是键值变量。

results = tmpl_cache.get(key=search_param, createfunc=get_results)

如何将variable_a传递到get_results(variable_a)中的createfunc

1 个答案:

答案 0 :(得分:0)

喜欢这样,或类似?

get_results_func返回一个函数指针,因为它在闭包中会正确调用get_results

def get_results_func(variable_a):
    def call_get_results():
        return get_results(variable_a)
    return call_get_results  # note the absence of brackets here.

results = tmpl_cache.get(key=search_param, createfunc=get_results_func(variable_a))