高阶函数
特点:
-
接受一个或者多个函数作为参数
-
将函数作为返回值返回
当我们使用一个函数作为参数,实际上是指将制定的代码传递进了目标函数
def fn(i):
if i%2==0:
return True
def f(func,i):
if func(i):
print(i,'是偶数')
else:
print(i,'不是偶数')
return func
print(f(fn,7))
>> 7 不是偶数
闭包
当有些数据不希望被别的访问,使用闭包
特点:
-
将函数作为返回值返回,也称为闭包
#当为奇数时与a相加 偶数为False def fn(): a = 10 def fn1(i): if i % 2 != 0: print('a+i=', a + i) else: return False return fn1 # a是一个函数 是调用fn()后返回的函数 这个函数时在fn内部定义 并不是全局函数 a = fn() a(19) >> a+i=29
形成闭包的条件
- 函数嵌套
- 将内部函数作为返回值返回
- 内部函数必须要使用到外部函数的变量