Python中的匿名函数是什么?如何定义?
Python中的匿名函数是一种特殊种类的函数,它也被称为lambda函数。与普通函数不同,lambda函数没有命名,也没有用def关键字进行定义。它是一种简洁且直接的方式来定义小型函数。
定义lambda函数的语法如下:
lambda argument_list: expression
其中,argument_list是一个以逗号分隔的参数列表,而expression是一个简单的表达式,它描述了lambda函数的返回值。
下面是一个简单的例子,用于计算两个数的平均值:
avg = lambda x, y: (x + y) / 2
在这个例子中,lambda函数带有两个参数x和y,它的返回值为两个数的平均值。请注意,与普通函数不同,我们没有给这个函数一个名称。这个函数将被直接调用,并将其结果存储在变量avg中。
可以使用lambda函数作为其他函数的参数,例如,sorted函数:
students = [('Alice', 23), ('Bob', 19), ('Charlie', 26)]
sorted_students = sorted(students, key=lambda x: x[1])
在这个例子中,我们使用lambda函数作为参数传递给sorted函数。这个lambda函数接受一个学生元组x,然后返回它的第二个元素,即学生的年龄。这个lambda函数告诉sorted函数按照学生的年龄进行排序。
另一个常见的用途是将lambda函数传递给map函数:
numbers = [1, 2, 3, 4, 5]
squares = map(lambda x: x ** 2, numbers)
在这个例子中,我们使用lambda函数将列表numbers中的每个元素平方。map函数将这个lambda函数应用于列表中的每个元素,并返回一个新的列表。
尽管lambda函数非常强大,但它们通常只用于简单的、单行的函数体,而对于复杂的函数,仍然需要使用具名函数。此外,虽然lambda函数非常方便,但它们通常更难以读取和理解,因为小写l、小写o和数字0的混淆,以及非ASCII字符的问题。
