【问题标题】:Logic behind the Inner Function内部函数背后的逻辑
【发布时间】: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。这可能不是你想要的。
  • 谢谢!我刚刚从另一篇文章中复制了代码,该文章举例说明了内部/嵌套函数的工作原理。

标签: python nested-function


【解决方案1】:

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 内。

【讨论】:

  • '唯一相关的代码'回答了一切。谢谢你的解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-05
  • 1970-01-01
  • 2023-03-12
  • 2022-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多