函数嵌套
python中有一个特殊的语法,很少有人会用到,但是又是确实会使用,那就是嵌套函数。
def outer(factor):
def inner(number):
return number*factor
return inner
一个函数在另一个函数里面,外层函数返回的是里层函数,也就是函数本身被返回了,返回的是函数。
注意,返回的函数还可以访问它的定义所在的作用域,也就是它带着它的环境。
这个被称为闭包。
其调用方法为:
func_inner = outer(4)
value = func_inner(5)
print(value)
# 结果为20
# 第一次获取到内部的函数,之后可以直接使用这个函数
#或者我们也可以写成一句话:
value = outer(4)(5)
print(value)
# 得到的结果也为20
#这是闭包函数的调用方式之一
关于闭包:
def line_conf():
b = 15
def line(x)
return 2*x + b
return line
#此处我们调用方式为:
b = 5
func_line = line_conf()
value = func_line(5)
#输出结果为25 = 2 x 5 + 15
#此处我们调用前,先重新设置了b的值,但是输出结果却并没有变为15
#这就是闭包的设计,
在这种情况下,我们说line函数和它的环境变量b构成了一个闭包,闭包是一个独立的运行环境,不受外部环境的影响和约束。