python基础之匿名函数详解

作者:思想流浪者 时间:2021-08-23 12:15:18 

1.匿名函数介绍

匿名函数指一类无须定义标识符的函数或子程序。Python用lambda语法定义匿名函数,只需用表达式而无需申明。

在python中,不通过def来声明函数名字,而是通过 lambda 关键字来定义的函数称为匿名函数。

lambda函数能接收任何数量(可以是0个)的参数,但只能返回一个表达式的值,lambda函数是一个函数对象,直接赋值给一个变量,这个变量就成了一个函数对象。

2.语法

lambda 参数:表达式

3.使用场景

(1)需要将一个函数对象作为参数来传递时,可以直接定义一个lambda函数(作为函数的参数或是返回值)

(2)要处理的业务符合 lambda 函数的情况(任意多个参数和一个返回值),并且只有一个地方会使用这个函数,不会在其他地方重用,可以使用lambda函数

4.匿名函数和普通函数的对比


def sum_func(a, b, c):
    return a + b + c
# 将匿名函数对象赋值给 sum_lambda
sum_lambda = lambda a, b, c: a + b + c
print(sum_func(1, 2, 3))  # 6
print(sum_lambda(1, 2, 3))  # 6

5.匿名函数的多种形式


# 无参数
lambda_a = lambda :100
print(lambda_a())  # 100

# 一个参数
lambda_b = lambda num: num * 10
print(lambda_b(1))  # 10

# 多个参数
lambda_c = lambda a, b, c: a + b + c
print(lambda_c(1, 10, 100))  # 111

# 表达式分支
lambda_d = lambda x: x if x > 5 else x + 1
print(lambda_d(4))  # 5
print(lambda_d(6))  # 6

6.lambda 作为一个参数传递


def sub_func(a, b, func):
    print("a = ", a)
    print("b = ", b)
    print("a - b = ", func(a, b))
sub_func(3, 2, lambda a, b: a - b)
# 结果:
#     a =  3
#     b =  2
#     a - b =  1

7. lambda函数与python内置函数配合使用

sorted是Python中对列表排序的内置函数,我们使用lambda来获取排序的key


member_list = [
    {"price": 9},
    {"price": 999},
    {"price": 99}
]
new_list = sorted(member_list, key=lambda dict_: dict_["price"])
print(new_list)  #  [{'price': 9}, {'price': 99}, {'price': 999}]

number_list = [100, 77, 69, 31, 44, 56]
num_sum = list(map(lambda x: {str(x): x}, number_list))
print(num_sum)  # [{'100': 100}, {'77': 77}, {'69': 69}, {'31': 31}, {'44': 44}, {'56': 56}]

map是Python中用来做映射的一个内置函数,接收两个参数,第一个参数是一个函数,第二个参数是一个可迭代对象,map会遍历可迭代对象的值,然后将值依次传递给函数执行。我们使用lambda来实现map中的函数参数。

8.lambda 作为函数的返回值


def discount_func(discount):
    return lambda price: discount * price

p = discount_func(0.8)
print(p)  # <function discount_func.<locals>.<lambda> at 0x00000241352BAC10>
print(p(100))  # 80.0

 匿名函数可以作为一个函数的返回值,上面函数discount_func返回一个设定了折扣的匿名函数对象,调用这个对象,传入价格,就可以得到折扣后的价格

来源:https://blog.csdn.net/qq_30346413/article/details/115314001

标签:python,匿名函数,lambda
0
投稿

猜你喜欢

  • 对acronym、abbr标签的理解

    2008-05-29 13:03:00
  • Python实现将通信达.day文件读取为DataFrame

    2022-07-31 23:33:20
  • JS中的THIS和WINDOW.EVENT.SRCELEMENT详解

    2023-07-20 20:48:51
  • python用opencv批量截取图像指定区域的方法

    2021-10-14 09:07:33
  • python性能测量工具cProfile使用解析

    2022-01-28 08:22:03
  • Python 函数用法简单示例【定义、参数、返回值、函数嵌套】

    2022-01-09 22:58:31
  • 编写一个asp代码执行器

    2007-09-24 16:05:00
  • 快速认识CSS中的overflow属性

    2009-05-29 16:36:00
  • python数据类型可变不可变知识点总结

    2021-10-29 13:26:11
  • 在Asp程序中取得表单所有内容的方法

    2010-04-24 16:07:00
  • Windows下安装python2.7及科学计算套装

    2023-05-28 13:35:19
  • win10下opencv-python特定版本手动安装与pip自动安装教程

    2022-09-29 14:03:02
  • Pytho的HTTP交互httpx包模块使用详解

    2022-11-17 06:03:29
  • MAC下Anaconda+Pyspark安装配置详细步骤

    2021-02-11 18:15:51
  • python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法

    2021-10-25 12:14:57
  • vue+Element实现登录随机验证码

    2024-05-29 22:48:34
  • python3实现单目标粒子群算法

    2023-02-27 05:55:09
  • FCKeditor.Net_2.2安全修正版

    2024-03-08 20:09:48
  • 微信小程序实现上传图片小功能

    2024-04-26 17:11:56
  • 服务器端控件是如何操作的?

    2009-11-01 15:22:00
  • asp之家 网络编程 m.aspxhome.com