正在练习tkinter。
里面command的参数传递我有一个疑问
以这篇文章为例http://blog.csdn.net/tinym87/article/details/6957438
def handler(a, b, c):
print "handler", a, b, c
if __name__=='__main__':
root = Tkinter.Tk()
# 通过中介函数handlerAdapotor进行command设置
btn = Tkinter.Button(text=u'按钮',** command=lambda : handler(a=1, b=2, c=3)**)
btn.pack()
root.mainloop()
我的疑问是,为什么加粗的部分不直接写出command=handler(a=1, b=2, c=3)呢?
当然我试了类似的写法会报错。但是我看不出原因。
我去翻了书确认一下概念但是更疑惑了。
<函数名>:lambda<参数列表>:<表达式>等价于
def <函数名>(<参数列表>):
return <表达式>
那么如果写command=lambda : handler(a=1, b=2, c=3),不就是只有定义没有调用吗?为什么反而这样是对的?
谢谢!