【问题标题】:how to store parameter passed to a lambda function in python? [duplicate]如何在python中存储传递给lambda函数的参数? [复制]
【发布时间】:2017-02-15 16:11:43
【问题描述】:

这是一个 python 程序,它产生一个驱动器列表并相应地添加按钮,

    drives = win32api.GetLogicalDriveStrings()
    drives = (drives.split('\000')[:-1])
    for d in range(0,len(drives)):
        box.add_widget(Button(text=drives[d],on_press = lambda x: self.open_drive(s=drives[0+d])))

    self.add_widget(box)

def open_drive(self,s):
    print(str(s))

当我点击按钮时,它应该打印 C:D:E: 等等,但它卡在列表中的最后一个驱动器上,我如何将参数存储在那个 lambda 函数中?

【问题讨论】:

    标签: python kivy


    【解决方案1】:

    我的头很痛,但你可以使用:

    for d in range(0,len(drives)):
            box.add_widget(Button(text=drives[d],
                                  on_press = (lambda d: lambda x: self.open_drive(s=drives[0+d]))(d))
    

    这样你构建了一个lambda function,它返回另一个lambda function,只有最后一个使用已知值作为参数传递给第一个lambda每个都被调用循环的循环 :)

    【讨论】:

      猜你喜欢
      • 2016-11-04
      • 1970-01-01
      • 2017-12-25
      • 2016-04-10
      • 1970-01-01
      • 2019-12-07
      • 2020-02-21
      • 1970-01-01
      • 2017-12-30
      相关资源
      最近更新 更多