我目前正在学习 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)
现在,我试图理解它背后的逻辑,但我似乎无法理解传递参数的顺序。我在 Debug模式下运行它并逐步执行这些行,我注意到 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
内。
我是一名优秀的程序员,十分优秀!