一文看懂Python匿名函数

欢迎关注WX公众号:【程序员管小亮】

前言

在python 中,我们不仅仅定义普通的函数——就是使用def关键字定义的函数;同时还可以定义匿名函数。那么什么是匿名函数呢?

1、定义:

匿名函数顾名思义就是指:是指一类无需定义标识符(函数名)的函数或子程序,也就是没有名字的函数。

python 使用 lambda 来创建匿名函数。在Python中,lambda 作为一个关键字,作为引入表达式的语法。想比较def函数,lambda 是单一的表达式,而不是语句块。lambda 这个名称来自于LISP,而LISP则是从lambda calculus(一种符号逻辑形式)取这个名称的。

2、语法格式:lambda 参数:表达式

lambda 语句中,开头先写关键字lambda,冒号前是参数,可以有多个,用逗号隔开;冒号右边的为表达式,需要注意的是只能有一个表达式。由于lambda返回的是函数对象(构建的是一个函数对象),所以需要定义一个变量去接收。

lambda [arg1 ,arg2,.....argn]:expression

#  lambda 参数列表:return [表达式] 变量
#  由于lambda返回的是函数对象(构建的是一个函数对象),所以需要定义一个变量去接收

我的另一个博客中使用的例子来做一个简单地说明:

add = lambda x, y : x+y
add(1,2)  # 结果为3

等价于函数

def a(x, y):
    return x + y
print(a(1, 2))

关键字lambda表示匿名函数,冒号前面的x,y表示函数参数。

3、注意点:

lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。但是lambda 函数不能包含命令,包含的表达式不能超过一个,不用写return,因为返回值就是该表达式的结果。

4、匿名函数优点:

1)使用Python 写一些脚本时,使用lambda 可以省去定义函数的过程,让代码更加精简。

2)对于一些抽象的,不会被别的地方再重复使用的函数,有时候函数起个名字也是个难题,使用lambda 不需要考虑命名的问题。

>>> f = lambda x: x * x
>>> f
<function <lambda> at 0x10453d7d0>
>>> f(5)
25

3)使用lambda在某些时候然后代码更容易理解。

5、应用:

在内置函数max()求最大值,min()求最小值, map()映射, reduce()合并, filter()过滤中会用到!

# map()映射
def f(x):
    return x * x
print(list(map(f,[1,2,3,4,5,6,7])))
>>> [1, 4, 9, 16, 25, 36, 49]
# reduce()合并
from functools import reduce

def add(x,y):
    return x + y
print(reduce(add, range(1, 101)))
>>> 5050
#  filter()过滤
def is_odd(n):
    return n % 2 == 1
newlist = list(filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))
print(newlist)
>>> [1, 3, 5, 7, 9]

python课程推荐。
在这里插入图片描述

参考文章:

原文地址:https://www.cnblogs.com/hzcya1995/p/13302791.html