Python 匿名函数
-
函数可以像普通变量一样进行赋值
def hello():
print('hello world')
print(hello.__name__)
a = hello
print(a.__name__)
hello()
a() -
函数可以作为参数传递,扩展函数的功能
def add(a, b):
return a+b
def calc(a, b, func):
return func(a, b)
print(calc(2, 3, add)) -
场景:当函数作为另一个函数的参数,只使用一次也得定义,否则无法使用,于是匿名函数就出现了。
-
定义:就是没有名字的函数,使用
lambda
关键字定义 -
格式:
-
以lambda开头
-
后面跟上该匿名函数的参数,多个参数使用逗号隔开
-
最后一个参数的后面跟上冒号':'
-
冒号的后面跟上一个表达式,这个表达式就是返回值,不需要使用return
-
-
示例1:
def calc(a, b, func):
return func(a, b)
# mul = lambda x, y: x*y
# print(calc(3, 5, mul))
print(calc(3, 5, lambda x,y:x*y)) -
示例2:
# l = [5, 3, 2, 8, 6, 1]
l = [
{'name':'xiaowang', 'age':15, 'height':150},
{'name':'xiaodu', 'age':14, 'height':145},
{'name':'xiaopang', 'age':12, 'height':140},
{'name':'banhua', 'age':13, 'height':155},
]
# def d_key(d):
# return d['age']
# l.sort(key=d_key)
# 当列表中的元素无法直接比较大小时,需要传递参数key
# key是一个函数,接受元素作为参数,返回用于比较的项
l.sort(key=lambda x:x['height'])
for i in l:
print(i) -
练习:
-
试着自己封装一个列表的sort函数,接受参数:排序对象、key、reverse
-