1.概念   

    匿名函数其实就是lambda表达式

    语法 :   lambda 形参列表:函数体

# 匿名函数
def text(x, y):
    result = x + y


lambda x, y: x + y
"""
    def text(x, y) 是def的声明部分,return x+y 是实现部分
    lambda x,y是声明部分,x + y是实现部分

"""

2. lambda 的特点以及优缺点

    2.1  lambda 是对def标准形式定义函数的简化,因为只有一行代码
    2.2  lambda 表示匿名函数,所以默认参数,关键字参数以及不定长参数都可以正常使用
    2.3  lambda 仅仅是一个表达式,而不是一个语句
    2.4  lambda 的主体部分是一个单个的语句,而不是代码块
    2.5  lambda 拥有自己的命名空间,不能访问自有参数列表之外的或者全局变量
    2.6  lambda 只能实现简单的逻辑,如果逻辑复杂且代码量较大,则不建议使用lambda,
           降低代码的可读性,为后期的代码维护增加困难
    2.7  在非多次调用函数的情况下,lambda简单而且性能较高

3. 匿名函数和正常函数的区别

# 1
def test():
    print("test")


# 打印出函数,和函数的类型
print(test, type(test))
test()  # 调用函数
'''
    匿名函数不需要使用return进行值的返回,只需要将结果书写在函数体的部分,
    值会被自动返回
'''
r1 = lambda: True
print(r1,type(r1))
print(r1())

 打印的结果:

  

根据运行结果可以发现,

  ①定义的函数,有test的函数名称,而使用匿名函数的 没有名称 函数的名称为 lambda函数

  ② 正常的函数调用时直接函数名(),而使用匿名函数是需要打印,或者赋值打印的

 4.匿名函数的函数体可以直接写打印语句,但是返回值则为None

# 2.
def test1():
    print("test1")


print(test1())
r2 = lambda: print("lambda_print")
print(r2())

打印结果      

 

5.有参数的匿名函数

# 3. 匿名函数的参数
r3 = lambda x: x ** 3  # 传递一个x,然后给x三次方,并返回
print(r3(2))  # 打印2的三次方

r4 = lambda x, y: x + y  # 传递一个x和y,然后给相加,并返回
print(r4(3, 5))   # 打印3+5

 打印结果

 6.匿名函数可以使用默认参数,关键字参数,不定长参数

# 4. 匿名函数可以使用默认参数,关键字参数,不定长参数
r5 = lambda x, y=5: x + y  # 默认参数
print(r5(2))
print(r5(2, 10))
print(r5(x=8, y=9))  # 关键字参数

r6 = lambda *a: a  # 不定长参数 ,*a:代表可以输入多个或者0个值
print(r6(1, 2, 3, 4, 5, 6))

7. 练习

# 需求:比较两个数的大小,返回较大的数
# 1.用正常的方式
def compare(num1, num2):
    if num1 >= num2:
        return num1
    else:
        return num2


print("传统的方式:", compare(9, 6))
# 2.用匿名函数
r7 = lambda num1, num2: num1 if (num1 >= num2) else num2
print("使用匿名函数:", r7(9, 3))
# 3.使用匿名函数另一种方式,直接赋值
r8 = (lambda num1, num2: num1 if (num1 >= num2) else num2)(9, 6)
print("使用匿名函数另一种方式:", r8)

运行结果,  可以看出, 对于比较简单的逻辑,我们可以使用lambda的方式进行

更多推荐

Python中的匿名函数