Python 爬阶梯 | 如何理解 Python 中的闭包

我们之前在说函数中的变量作用域的时候,有提到 nonlocal 这个玩意,也就是说当我们在使用嵌套函数的时候,涉及到的一些变量访问问题,举个例子:

在这里我们定义了一个嵌套函数,我们在内部方法 inner_fun 中直接去访问了外部方法的变量 x ,执行结果可以看到,是可以访问的。但是如果我们要去修改这个外部的变量,会怎么样呢?

是的,会报错:

本文隐藏内容 登陆 后才可以浏览
的时候,用闭包是一种更好的选择。

5 Replies to “Python 爬阶梯 | 如何理解 Python 中的闭包”

  1. 有点懵,不是很理解,但是也不知道要怎么问,希望后面回来看的时候可以看懂吧orz

  2. outer(2) #运行此处报错,一样的代码,网上查去掉(),但这样就无法传参数了,请问应该怎么解决?

    TypeError: ‘NoneType’ object is not callable

  3. outer = outer_fun(5)
    outer(8) #为什么这里的8 就会指向传递给内部函数的y,而不是给 外部的 x

  4. 当调用 outer_fun(5) 时,返回的并不是求和结果,而是内部 inner_fun() 函数的引用,调用函数 outer() 时,才是真正计算求和的结果。

发表评论

电子邮件地址不会被公开。 必填项已用*标注