闭包问题

来源:11-16 再用闭包解决一下_

夏雪忆冬

2018-05-10

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 就是那个环境变量?

写回答

2回答

jimwhile

2018-09-07

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

0
0

慕桂英8092138

2018-05-11

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

0
1
慕莱坞4103370
我也问过老师类似问题,但是老师说pos是参数,不是环境变量;如果是环境变量,在go函数里又对环境变量赋值了,然而环境变量不能重新赋值。所以pos仅仅是factory函数的参数,在go函数调用该参数。这也说明一个闭包不一定非要有环境变量。
2018-05-12
共1条回复

Python3.8系统入门+进阶 (程序员必备第二语言)

语法精讲/配套练习+思考题/原生爬虫实战

14293 学习 · 4429 问题

查看课程

相似问题