day11 高阶函数
-
匿名函数
-
匿名函数 - 没有函数名的函数
-
函数名 = lambda 形参列表: 返回值
-
相当于:
def(形参列表):
return 返回值 -
注意: 匿名的本质还是函数, 之前函数中除了定义函数的语法以外的内容都适用于匿名
# 求两个数的和的匿名函数 sum1 = lambda num1, num2:num1 + num2 # def sum1(num1, num2): # return num1 +num2 print(sum1(10, 20)) # 练习: 写一个匿名函数判断指定的年是否是闰年 is_leap_year = lambda years : (years % 4 == 0 and years % 100 != 0) or years % 400 == 0 print(is_leap_year(2020)) if is_leap_year: print('是闰年') else: print('平年')
-
-
-
高阶函数
-
函数就是变量
-
python中定义函数就是定义类型是function的变量, 函数名就是变量名
-
普通变量能做的事情, 函数都可以做
x = lambda num: num * 2 print(type(x)) #<class 'function'> print(x(11)) x = 10 print(type(x)) x = '1, 2, 3' print(type(x)) x.replace() x = [1, 2, 3] print(type(x)) x.append(100) x = { 'a':'1', 'b':'2'} print(type(x)) print(x[1]) # func3是一个实参高阶函数 - 如果一个函数的参数就是函数, 那么这个函数就是实参高阶函数 def func3(x, y, z, m): # x是长度大于等于2的有序序列 print(x[1]) # y是任何类型数据 print(y) # z是字典 print(z['a']) # m是函数 m() def t1(): print('x') func3('abc', 1, { 'a':100}, t1) func3('abc', 1, { 'a':100}, lambda x=10: x*2) # func4是返回值高阶函数 - 如果一个函数的返回值是函数, 那么这个函数就是返回值高阶函数 def func4(): # name = '张三' # return name def t2(): print('你好!') return t2 result = func4()() print('===================', result) # 练习: list3 = [] for x in range(5): list3.append(lambda i: x*i) print(list3[0][2]) print(list3[1][2]) print(list3[2][2])
-
-
实参高阶函数
-
python中常用的实参高阶函数:max、min、sorted、map、reduce
-
max和min
- max(序列, key=函数) - 按照key对应的函数指定的规则来获取序列中元素的最大值
- 函数的要求: 1) 有且只有一个参数 (这个参数指向的是序 列中的元素)
2) 有一个返回值 (比较大小的对象)
-
sorted
-
sorted(序列, key = 函数)
students = [ { 'name': '小明', 'age': '18', 'score': '52'}, { 'name': '小红', 'age': '12', 'score': '98'},
-
-
-
-