【发布时间】:2018-10-11 01:55:34
【问题描述】:
在学习Python的过程中。 我了解 lambda 的用法,这是一个示例和链接(供其他人使用)。
Why are Python lambdas useful?
mult3 = filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9])
将 [3, 6, 9] 分配给 mult3。
这是我在本书的测验中需要做的代码:
import tkinter
def counter(text):
"""Add 1 every time the button is pressed"""
count = int(text.get())
text.set(count + 1)
window = tkinter.Tk()
frame = tkinter.Frame(window)
frame.pack()
var = tkinter.IntVar()
var.set(0)
button = tkinter.Button(window, textvariable=var, command=lambda: counter(var))
button.pack()
tkinter.mainloop()
这是经过验证的解决方案。除了变量按钮中的代码外,我想出的是相同的。 这是我的台词:
button = tkinter.Button(window, textvariable=var, command=counter(var))
没有 lambda 会阻止计数器工作。我不明白为什么需要 lambda?因为我只是调用我创建的函数,所以我不需要新的未命名函数..?
提前感谢您的宝贵时间:)
【问题讨论】:
-
在您的代码版本中,
counter(var)只执行一次。在他们的版本中,每次单击按钮时都会执行。 -
你知道为什么吗?我正在努力理解
-
更广泛地考虑一下。当您传递像
f(3 + 7)这样的函数参数时,您并没有将3 + 7传递给函数,而是传递了10。 -
@Yabusa:“为什么”是什么意思?没有比语言如何工作更深层次的原因了。在一种情况下,Button 的参数是一个函数,在另一种情况下,它是函数调用的结果。
标签: python python-3.x user-interface tkinter