' lambda之间的差异:'和' lambda x:'在python中

时间:2015-06-18 20:17:10

标签: python python-3.x lambda tkinter

我正在使用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')))

2 个答案:

答案 0 :(得分:2)

python中的

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(或xy)是内联函数的参数。

答案 1 :(得分:0)

lambda x: ...与以下内容大致相同:

def IDontCareWhatTheFunctionIsCalled(x): ...

lambda: ...与以下内容大致相同:

def IDontCareWhatTheFunctionIsCalled(): ...

当调用它的东西添加参数(例如使用event时的bind参数)时,您使用第一个表单,并且当调用者执行时,您可以使用后者传递一个参数(例如指定按钮的command属性的回调)。