python--匿名函数详解

1、使用场景

可以定义一个简单的单行函数

可以作为函数的参数进行传递

配合列表完成自定义排序

list.sort(key = lambda 临时变量名 : 临时变量名[key或者index])

2、规则

lambda中不能使用if语句,while循环和for循环,返回结果不能用return,表达式的运行结果就是返回结果

3、语法

可以有参数也可以没有参数

lambda 形参1, 形参2, ... : 单行表达式或者函数调用

# stus = [{"name": "czhangsan", "age": 18}, {"name": "blisi", "age": 19}, {"name": "awangwu", "age": 17}]
# for value in stus:
#     value['age']

# 排序: [{"name": "wangwu", "age": 17}, {"name": "zhangsan", "age": 18}, {"name": "lisi", "age": 19}]
# 配合lambda完成
# lambda 列表产生的临时变量(代表的是每个元素): 临时变量[key或者是index]
# (通过key获取的value进行整体排序)
# (通过index获取value进行整体排序)
# stus.sort(key=lambda new_dict:new_dict['name'])
# print(stus)

my_list = [[1, 10, 2], [2, 11, 4], [-20, -20, 5]]
# [[-20, -20, 5], [1, 10, 2], [2, 11, 4]]
my_list.sort(key=lambda new_list: new_list[1])
print(my_list)
# 不单单变量可以作为函数的参数传递, 标准函数也是可以的, 匿名函数也是可以的
# # 定义一个函数
# def demo(func_name):
#
#     # 变量
#     a = 10
#     b = 5
#     # 计算10 + 5 或者 10 - 5
#     ret = func_name(a, b)
#     print(ret)
#
# # 加法函数
# def func1(a, b):
#     return a + b
#
# # 减法函数
# def func2(a, b):
#     return a - b
#
#
# # 加法
# demo(func1)
# # 减法
# demo(func2)


# 01: 加法函数和减法函数都是只用一次而已
# 定义一个函数
def demo(func_name):

    # 变量
    a = 10
    b = 5
    # 计算10 + 5 或者 10 - 5
    ret = func_name(a, b)
    print(ret)

# 简化1
# # 加法函数
# def func1(a, b):
#     return a + b
# func1 = lambda a, b: a + b

# 简化2
# # 减法函数
# def func2(a, b):
#     return a - b
# func2 = lambda a, b: a - b

# 加法
demo(lambda a, b: a + b)
# 减法
demo(lambda a, b: a - b)


猜你喜欢

转载自blog.csdn.net/weixin_44079370/article/details/109711304