def perimeter(c, d):
'''计算长为 20,宽为 10 的矩形周长'''
print(f'周长:{c}*2+{d}*2={c*2+d*2}')
def funcOuter(func):
def funcInner(x, y):
perimeter(x, y)
func(x, y)
return funcInner
@funcOuter
def test(a, b):
print(f'长和宽之和:{a}+{b}={a+b}')
test(10, 20)
运行结果:

问题:
参数传递问题。调用 test(10,20)时其实就是调用的闭包的内部函数funcInner(x,y),这里的10,20为实参,x,y为形参,没问题。接下来往下执行perimeter(x,y),调用我新增的功能函数。
麻烦老师仔细说明一下,内部函数体里perimeter(x,y)和func(x,y)的形参x,y的值为什么分别都是10,20,是怎么传递过来的?视频中老师没讲太清楚,我们都能理解funcouter(func)中的形参func实际上就是原先的test(a,b),所以闭包中内部函数func(x,y)其实也就相当于test(a,b),然后老师就说func(x,y)里的形参x,y就是10,20,没有解释为什么
所以麻烦老师解答一下,谢谢