内部函数背后的逻辑
Logic behind the Inner Function
我目前正在学习 Python 并遵循教程并将其制作成装饰器。但在深入研究之前,我想很好地了解内部函数的工作原理,因此我遇到了这段代码。
def max(a, b, c):
def max2(x, y):
return x if x >= y else y
return max2(a, max2(b, c))
main_max = max(15, 5, 10)
print(main_max)
现在,我试图理解其背后的逻辑,但我似乎无法理解传递参数的顺序。我 运行 它处于调试模式并逐步执行这些行,我注意到 x 被赋予了 b 的值,而 y 被赋予了 c 的值。这是为什么?
是否因为第二个参数 max2(b, c) 在计算 max2(a, max2(b, c)) 之前先被计算?
Max 接受三个参数。 Max2 有两个参数。唯一相关的代码行是
return max2(a, max2(b, c))
我们知道a
就是a
。为了继续计算,我们需要解决(使用 max2
)b
或 c
中的较大者。换句话说,max2(15, max2(5, 10))
可以被认为是
t = max2(5, 10) # (5 ? 10) = 10
return max2(15, t) # (15 ? 10) = 15
唯一需要注意的是 max2
的范围被限制在 max
.
内
我目前正在学习 Python 并遵循教程并将其制作成装饰器。但在深入研究之前,我想很好地了解内部函数的工作原理,因此我遇到了这段代码。
def max(a, b, c):
def max2(x, y):
return x if x >= y else y
return max2(a, max2(b, c))
main_max = max(15, 5, 10)
print(main_max)
现在,我试图理解其背后的逻辑,但我似乎无法理解传递参数的顺序。我 运行 它处于调试模式并逐步执行这些行,我注意到 x 被赋予了 b 的值,而 y 被赋予了 c 的值。这是为什么?
是否因为第二个参数 max2(b, c) 在计算 max2(a, max2(b, c)) 之前先被计算?
Max 接受三个参数。 Max2 有两个参数。唯一相关的代码行是
return max2(a, max2(b, c))
我们知道a
就是a
。为了继续计算,我们需要解决(使用 max2
)b
或 c
中的较大者。换句话说,max2(15, max2(5, 10))
可以被认为是
t = max2(5, 10) # (5 ? 10) = 10
return max2(15, t) # (15 ? 10) = 15
唯一需要注意的是 max2
的范围被限制在 max
.