Pythonlambda函数教程展示了如何在Python中创建匿名函数。Python中的匿名函数是使用lambda
关键字创建的。
Pythonlambda函数
Pythonlambda函数,也称为匿名函数,是没有名称的内联函数。它们是使用lambda
关键字创建的。这是Python内置函数范式的一部分。
Pythonlambda函数仅限于单个表达式。它们可以用在任何可以使用正常功能的地方。
Pythonlambda语法
Pythonlambda具有以下语法:
z = lambda x: x * y
该语句使用lambda
关键字创建一个匿名函数。该函数将两个值相乘。x是传递给lambda函数的参数。参数后跟一个冒号字符。冒号旁边的代码是调用lambda函数时执行的表达式。lambda函数被分配给z变量。
Pythonlambda示例
以下是演示Pythonlambda函数的简单示例。
#!/usr/bin/python def square(x): return x * x sqr_fun = lambda x: x * x print(square(3)) print(sqr_fun(4))
在示例中,我们有两个计算值平方的函数。
def square(x): return x * x
这是一个用def
关键字定义的Python函数。函数的名称是square
。
sqr_fun = lambda x: x * x
这里我们用lambda
定义了一个匿名的内联函数。请注意,该函数没有名称。sqr_fun
是保存创建的lambda函数的变量的名称。
$ ./lambda_fun_simple.py 9 16
带地图的Pythonlambda
Pythonlambda函数对于map
函数很有用。我们可以创建更简洁的代码。Pythonmap
是一个内置函数,它将给定的函数应用于可迭代对象的每个项目并返回一个迭代器对象。
#!/usr/bin/python nums = [1, 2, 3, 4, 5, 6] nums_squared = map(lambda x: x * x, nums) for num in nums_squared: print(num)
该示例为map
创建了一个小的内联函数作为参数。通过map
函数,我们将lambda函数应用于列表的每个元素。
$ ./lambda_fun_map.py 1 4 9 16 25 36
带过滤器的Pythonlambda
Pythonlambda函数可以与filter
函数一起使用。filter
函数根据函数返回true的可迭代对象的那些元素构造一个列表。
#!/usr/bin/python nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] nums_filtered = list(filter(lambda x: x % 2, nums)) print(nums_filtered)
在示例中,我们过滤了整数列表。新列表仅包含奇数。
nums_filtered = list(filter(lambda x: x % 2, nums))
filter
的第一个参数是处理列表元素的函数。lambda函数具有x%2
表达式,对于奇数返回true。
$ ./lambda_fun_filter.py [1, 3, 5, 7, 9, 11]
带排序的Pythonlambda
Python列表有一个内置的list.sort
方法,可以就地修改列表。该方法有一个关键参数,用于指定在进行比较之前要在每个列表元素上调用的函数。在那里我们可以使用lambda函数。
#!/usr/bin/python users = [ {'name': 'John Doe', 'date_of_birth': 1987}, {'name': 'Jane Doe', 'date_of_birth': 1996}, {'name': 'Robert Brown', 'date_of_birth': 1977}, {'name': 'Lucia Smith', 'date_of_birth': 2002}, {'name': 'Patrick Dempsey', 'date_of_birth': 1994} ] users.sort(reverse=True, key=lambda e: e['date_of_birth']) for user in users: print(user)
我们有一个用户词典列表。使用lambda函数,我们按出生日期的相反顺序对用户进行排序。
$ ./lambda_fun_sort.py {'name': 'Lucia Smith', 'date_of_birth': 2002} {'name': 'Jane Doe', 'date_of_birth': 1996} {'name': 'Patrick Dempsey', 'date_of_birth': 1994} {'name': 'John Doe', 'date_of_birth': 1987} {'name': 'Robert Brown', 'date_of_birth': 1977}
Pythonlambda与Tkinter
Pythonlambda函数可用于使用Tkinter进行GUI编程。它允许为命令
参数创建小型内联函数。
#!/usr/bin/python from tkinter import Tk, BOTH, messagebox from tkinter.ttk import Frame, Button class Example(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent self.initUI() def initUI(self): self.parent.title("Buttons") self.pack(fill=BOTH, expand=1) btn1 = Button(self, text="Button 1", command=lambda: self.onClick("Button 1")) btn1.pack(padx=5, pady=5) btn2 = Button(self, text="Button 2", command=lambda: self.onClick("Button 2")) btn2.pack(padx=5, pady=5) btn2 = Button(self, text="Button 3", command=lambda: self.onClick("Button 3")) btn2.pack(padx=5, pady=5) def onClick(self, text): messagebox.showinfo("Button label", text); def main(): root = Tk() root.geometry("250x150+300+300") app = Example(root) root.mainloop() if __name__ == '__main__': main()
我们有三个按钮共享一个回调。lambda函数允许我们将特定数据发送到回调函数。每个按钮在消息框中显示其标签。
btn1 = Button(self, text="Button 1", command=lambda: self.onClick("Button 1"))
我们将匿名函数传递给command
参数。我们将按钮的标签发送到onClick
回调。
在本教程中,我们使用了Pythonlambda函数。
列出所有Python教程。