我正在使用tkinter并且与lambda函数混淆。第一个语句使用lambda:
中的command = lambda: Main.new_file(self.pt)
。虽然第二个陈述需要lambda x:
# 1st statement
filemenu.add_command(label='New', accelerator='Ctrl+N', underline=0, command= lambda: Main.new_file(self.pt))
#2nd Statement
self.frame.bind('<Configure>', lambda x: self.canvas.configure(scrollregion=self.canvas.bbox('all')))
答案 0 :(得分:2)
lambda
是内联函数。 lambda
的格式为 -
lambda <parameter list>: <expression>
如果您的参数列表为空,那么您的lambda表达式将如下所示:
foo = lambda: print('something')
foo()
>> something
您可以在不传递参数的情况下调用此类lambda
函数。
如果您要将参数传递给lambda
函数,您可以这样写:
func1 = lambda x: print(x)
func2 = lambda x,y: print(x + y)
func1(1)
>> 1
func2(4,5)
>> 9
...
此处x
(或x
和y
)是内联函数的参数。
答案 1 :(得分:0)
lambda x: ...
与以下内容大致相同:
def IDontCareWhatTheFunctionIsCalled(x): ...
lambda: ...
与以下内容大致相同:
def IDontCareWhatTheFunctionIsCalled(): ...
当调用它的东西添加参数(例如使用event
时的bind
参数)时,您使用第一个表单,并且当调用者执行时,您可以使用后者传递一个参数(例如指定按钮的command
属性的回调)。