【问题标题】:Closures in Python - variable assignmentPython 中的闭包 - 变量赋值
【发布时间】:2015-08-04 03:46:01
【问题描述】:

当我在 python 中遇到闭包时,从下面的代码中,我不明白调用函数时为 x 和 y 分配的参数的值如何。在第 1 点中,我们为 x 传递参数值 5。然后将其分配给函数中的 x。在第 2 点中,我们将 7 传递给 inc5,我的疑问出现在这里,值 7 应该再次分配给 x,但它是如何分配给 y 的。

def makeInc(x):
    def inc(y):
        return y + x
    return inc

inc5 = makeInc(5) #Point 1
inc5(7) #Point 2

【问题讨论】:

标签: python scope closures


【解决方案1】:

我不明白为什么您认为应该将 7 分配给 x。外部函数makeInc 返回内部 函数inc,它是您分配给inc5 的函数。所以 inc5 接受参数y,这就是绑定到值 7 的内容。

【讨论】:

    【解决方案2】:

    Point 1,你传递了一个变量inc5makeInc函数的返回结果,这将是另一个函数inc,局部变量x设置为5。然后你调用这个新的函数并传递一个 7 作为其唯一的参数y

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-29
      • 1970-01-01
      相关资源
      最近更新 更多