python: Def函数内嵌套另一个Def函数有什么用
这是一种进阶用法,简单来说,定义一只母鸡?,返回一个鸡蛋?,最后这鸡蛋还能浮出一只小鸡?
用一个例子说明:
定义一个方程:
f
=
a
x
f=ax
f=ax,其中
a
a
a和
x
x
x都需要不断的改变
def equality(a):
def func(x):
return a*x
return func
这是我们只需要
equality(4)(5). #a=4,x=5, f=4*5
20
上面只是个引子。
再看一个卷积神经网络计算图像输出长度的例子:
def img_output_length(width, height):
def get_output_length(input_length):
# zero_pad
input_length += 6
# apply 4 strided convolutions
filter_sizes = [7, 3, 1, 1]
stride = 2
for filter_size in filter_sizes:
input_length = (input_length - filter_size + stride) // stride
return input_length
return get_output_length(width), get_output_length(height)
这时,输入的width,height会分别执行内部的get_output_length,最后再输出结果
img_output_length(400,500)
(25, 31)
是不是方便了许多