1.匿名函数
在Python中,不通过def来声明函数名字,而是通过lambda关键字来定义的函数称为匿名函数。lambda函数能接收任何数量(可以是0个)的参数,但只能返回一个表达式的值,lambda函数是一个函数对象,直接赋值给一个变量,这个变量就成了一个函数对象。
匿名函数语法:
lambda 参数:表达式
匿名函数的使用场合:
实例:
# -*- coding: utf-8 -*-
# @Time : 2022/3/31 16:25
# @File : anonymous.py
# @Software : PyCharm
# 无参数
lambda_a = lambda: 100
print(lambda_a())
# 一个参数
lambda_b = lambda num: num * 10
print(lambda_b(5))
# 多个参数
lambda_c = lambda a, b, c, d: a + b + c + d
print(lambda_c(1, 2, 3, 4))
# 表达式分支
lambda_d = lambda x: x if x % 2 == 0 else x + 1
print(lambda_d(6))
print(lambda_d(7))
# lambda作为一个参数传递
def sub_func(a, b, func):
print('a =', a)
print('b =', b)
print('a - b =', func(a, b))
sub_func(100, 1, lambda a, b: a - b)
# lambda函数与Python内置函数配合使用
member_list = [
{"name": "风清扬", "age": 99, "power": 10000},
{"name": "无崖子", "age": 89, "power": 9000},
{"name": "王重阳", "age": 120, "power": 8000}
]
new_list = sorted(member_list, key=lambda dict_: dict_["power"])
print(new_list)
# lambda作为函数的返回值
def run_func(a, b):
return lambda c: a + b + c
return_func = run_func(1, 10000)
print(return_func)
print(return_func(100))
运行结果:
100
50
10
6
8
a = 100
b = 1
a - b = 99
[{'name': '王重阳', 'age': 120, 'power': 8000}, {'name': '无崖子', 'age': 89, 'power': 9000}, {'name': '风清扬', 'age': 99, 'power': 10000}]
<function run_func.<locals>.<lambda> at 0x0000015F613ADAB0>
10101