请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

闭包问题

origin = 0  


def factory(pos): 

    def go(step):

        nonlocal pos  #强制声明pos 不是局部变量    

        new_pos = pos + step

        pos = new_pos 

        return new_pos

    return go


闭包形成 不是说的要“函数”+“环境变量”吗?怎么没有在 go()函数前定义一个环境变量,并在go()函数里去引用环境变量?

有点与前几节看的定义不一样啊,老师,我哪里理解错误呢?

是不是pos 就是那个环境变量?

正在回答 回答被采纳积分+3

2回答

jimwhile 2018-09-07 16:22:17

第一次传入的是参数,经过函数处理后变成环境变量了

0 回复 有任何疑惑可以回复我~
慕桂英8092138 2018-05-11 11:36:54

我觉得可以这样理解,当调用factory(pos)时,这个环境变量就是pos

0 回复 有任何疑惑可以回复我~
  • 我也问过老师类似问题,但是老师说pos是参数,不是环境变量;如果是环境变量,在go函数里又对环境变量赋值了,然而环境变量不能重新赋值。所以pos仅仅是factory函数的参数,在go函数调用该参数。这也说明一个闭包不一定非要有环境变量。
    回复 有任何疑惑可以回复我~ 2018-05-12 14:04:16
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信