7.8 匿名函数

7.8 匿名函数

  1. 有名函数:有名字的函数
#有名函数的定义
def func():
    pass

#有名函数的调用
func()
  1. 匿名函数
    匿名函数:没有函数名的函数
  • lambda关键字定义
  • 语法:
    • (lambda 形参 : 逻辑代码 )(实参)
#赋值又变成有名函数,不建议这样写
f=lambda x,y : x+y
f(1,2) 
print((lambda x,y:x+y)(1,2)) 

#匿名函数也能调用,但是调用需要注意只能使用一次,匿名函数一般不单独使用。
#而是与max(),min(),map(),sorted(),filter()这些内置函数一起使用。
  1. 内置函数
  • 'a'.strip()

  • 对于python而言,在python解释器启动时候内置函数就存在

  1. lambda & max()
    max() :将值丢到max()函数里面返回最大值,传入参数类型为字典,则默认按键值取最大。
#薪资信息
salary_dict={
    'jane':8000,
    'coco':3000,
    'mike':5000,
    'lihua':10000
    
}

找到工资最高的人

  • max() 默认用法
    • 找出薪资最高的人可以使用max()方法但是max默认比较的是字典的key
    • 按字母比较从小到大:coco,lihua,jane,mike
max_salary=max(salary_dict)
print(max_salary)
mike
num_max=max(2,4,3,5,78,53.24)
print(num_max)
78
  • max用法2 : max(可迭代对象,key=func)
def func(name):
    return salary_dict[name]

max_salary=max(salary_dict,key=func) 
#将字典作为参数一个一个传入函数func中,返回值按照返回值比较大小,返回工资最高的人
print(max_salary)

lihua
  • 上述代码逻辑
    • salary_dict变成迭代器对象salary_dict_iter
    • res=salary_dict.__iter.next
    • res丢入函数func中,返回8000,3000,5000,10000
    • 得到函数的返回值把这个返回值作为判断依据
#lambda & max() 
salary_max=max(salary_dict,key=lambda name:salary_dict[name])
print(salary_max)
  1. lambda & min()
  • min()返回最小值,类似于max
salary_min=min(salary_dict,key=lambda name:salary_dict[name])
print(salary_min)
coco
  1. lambda & sorted()
#默认用法
lis=[1,3,4,2,1,4,5]
sort_lis=sorted(lis)
print(sort_lis)
[1, 1, 2, 3, 4, 4, 5]
#lambda & sorted() 

salary_sort=sorted(salary_dict,key=lambda name:salary_dict[name])
#按照值排序返回排序后的key
print(salary_sort)
['coco', 'mike', 'jane', 'lihua']
7. lambda & map()映射
name_lis=['coco','jane','mike','lihua']

#在每个元素后添加3000
name_lis_map=map(lambda name:f'{name}:3000',name_lis)
print(name_lis_map) #name_lis_map是一个迭代器
print(list(name_lis_map))

<map object at 0x0000018374BE2020>
['coco:3000', 'jane:3000', 'mike:3000', 'lihua:3000']
  1. lambda & filter() 过滤
lis=['coco:3000', 'jane:3000', 'mike:3000', 'lihua:3000','aike']

#过滤出不以3000为结尾的元素
lis_filter=filter(lambda x:not x.endswith('3000'),lis) 
print(lis_filter) #lis_filter 是迭代器
print(list(lis_filter))
<filter object at 0x0000018374BE30A0>
['aike']
posted @ 2025-08-26 16:55  bokebanla  阅读(4)  评论(0)    收藏  举报