-
函数可以像普通变量一样进行赋值
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
-