【问题标题】:Functors vs Function Closures in PythonPython 中的函子与函数闭包
【发布时间】:2014-11-06 08:12:55
【问题描述】:

我们应该在我们的实验室中使用函子,然后改用函数闭包。 对于我们从 functools 导入 partial 作为命令的仿函数,设置最终看起来像这样:

digit = command(self.add_character, text = number)

label.bind('< Button-1 >', digit)

然后我们会将后来开发的方法绑定到标签... 我如何用函数闭包而不是仿函数来做这样的事情?

【问题讨论】:

    标签: python function closures functor functools


    【解决方案1】:

    您将使用 lambda 来绑定匿名函数:

    label.bind('< Button-1 >', lambda ev: self.add_character(ev, text=number))
    

    在这里,我假设标签回调通常在事件参数中传递。您可能需要调整回调传递的参数数量。这是一个基于 tkinter 的 GUI,只是要传入事件。

    number 值已关闭,而当使用 functools.partial() 对象时,number 值将作为参数绑定到可调用对象。

    【讨论】:

      猜你喜欢
      • 2016-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-12
      相关资源
      最近更新 更多