【问题标题】:python: How can I remove lambda in this code?python:如何在这段代码中删除 lambda?
【发布时间】:2021-02-13 11:48:34
【问题描述】:

我是编程新手,不知道如何在编程中使用 lambda。我问是否有办法编辑这段代码,这样我就不需要在上面使用 lambda。

from tkinter import *
def define(a):
    pass

root = Tk()

#this line
auto = Button(root, text="auto", command=lambda: define(True)).pack()

【问题讨论】:

  • 我不认为这个程序运行在任何一种方式,因为 define 函数没有接受任何参数,尽管一个参数是 define(True)
  • 创建一个不带任何参数的函数然后使用command=somFun 现在从someFun 调用其他函数,或者您也可以使用functools.partial

标签: python tkinter lambda


【解决方案1】:

如果你想从你的代码中删除lambda,你必须定义一个函数返回另一个函数define

也就是说,

def replacement():
    return define(argument)

这样您就不必在调用Button 时使用 lambda。相反,您可以将Button 称为:

auto = Button(root, text="auto", command=replacement).pack()

我希望这会有所帮助。但是,您应该了解什么是 lambda。

【讨论】:

  • 这将在按下按钮之前执行该功能。
  • 感谢您指出这一点。我已编辑。请再看看。
  • return define(argument) 应该是 return define(True),因为 argument 未定义。
【解决方案2】:

您也可以使用functools 中的partial。它与@Suraj Upadhyay 建议的基本相同。 这是代码:

from tkinter import *
from functools import partial

def define(a):
    pass

root = Tk()

function = partial(define, True) # The first arg is the function name and the rest are the function args
auto = Button(root, text="auto", command=function)
auto.pack()

【讨论】:

  • 你可以使用command=partial(define, True)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 2013-08-24
  • 1970-01-01
相关资源
最近更新 更多