高阶函数:
可以把函数作为参数传入,这样的函数叫做高阶函数。
高阶函数除了可以接受函数作为参数外,还可以把函数作为返回值。
def func(a,b,c):
return c(a)+c(b)
print(func(-3,4,abs))
#7
把函数做为返回值:
def func(*args):
def sum():
a = 0
for i in args:
a += i
return a
return sum
x=func(1,2,3)
print(x)
print(x())
<function func.<locals>.sum at 0x00000000006E01E0>
6
闭包:
一个闭包就是你调用了一个函数A,这个函数A返回了一个函数B给你。这个返回的函数B就叫做闭包。
你在调用函数A的时候传递的参数就是自由变量。
def count():
fs=[]
for i in range(1,4):
def f():
return i*i
fs.append(f)
return fs
f1,f2,f3=count()
print(f1())
print(f2())
print(f3())
9
9
9
def count1():
def f(j):
def g():
return j*j
return g
fs=[]
for i in range(1,4):
fs.append(f(i))
return fs
f1,f2,f3=count1()
print(f1())
print(f2())
print(f3())
1
4
9