【发布时间】:2019-01-25 03:50:11
【问题描述】:
我目前正在学习 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会影响内置方法max。这可能不是你想要的。 -
谢谢!我刚刚从另一篇文章中复制了代码,该文章举例说明了内部/嵌套函数的工作原理。