Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 内在功能背后的逻辑_Python_Nested Function - Fatal编程技术网

Python 内在功能背后的逻辑

Python 内在功能背后的逻辑,python,nested-function,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) 现在,我试图理解它背后的逻辑,但我似乎无法理解传

我目前正在学习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

范围内。请注意,此处定义的
max
隐藏了内置方法。这可能不是你想要的。谢谢!我刚刚从另一篇文章中复制了这段代码,该文章给出了一个关于内部/嵌套函数如何工作的示例。“唯一相关的代码”回答了所有问题。感谢您的解释。