接收函数作为参数,或者将函数作为返回值的函数就是高级函数
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] #列表
def fn1(k): #定义一个3的倍数的函数
if k%3==0:
return True
return False
def fn2(i): #定义一个2的倍数的函数
if i % 2 == 0:
return True
def fn3(j): #定义一个函数 判断是否大于5
if j > 5:
return True
return False
#使用一个函数作为参数 可以将制定的代码传递进了目标参数
def fn(func,list):
# 创建新列表
new_st = []
for a in list:
if func(a): #使用一个 函数作为参数
new_st.append(a)
return new_st
print(fn(fn1,list)) #3的倍数
print(fn(fn2,list)) #2的倍数
print(fn(fn3,list)) #大于5的数
将函数作为返回值也是高阶函数 我们也称为闭包。
闭包的优点:
形成闭包的条件:
我们可以直接通过修改函数中的代码来完成需求,但是会产生以下一些问题: