内部功能背后的逻辑

时间:2018-08-18 08:10:58

标签: python nested-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(a,max2(b,c))之前先评估了第二个参数max2(b,c)吗?

1 个答案:

答案 0 :(得分:4)

Max接受三个参数。 Max2有两个参数。唯一相关的代码行是

return max2(a, max2(b, c))

我们知道aa。为了继续进行计算,我们需要解析(使用max2bc中的较大者。换句话说,max2(15, max2(5, 10))可以被认为是

t = max2(5, 10) # (5 ? 10) = 10
return max2(15, t) # (15 ? 10) = 15

唯一要意识到的是max2的范围被限制在max内。