采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
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 就是那个环境变量?
第一次传入的是参数,经过函数处理后变成环境变量了
我觉得可以这样理解,当调用factory(pos)时,这个环境变量就是pos
我也问过老师类似问题,但是老师说pos是参数,不是环境变量;如果是环境变量,在go函数里又对环境变量赋值了,然而环境变量不能重新赋值。所以pos仅仅是factory函数的参数,在go函数调用该参数。这也说明一个闭包不一定非要有环境变量。
登录后可查看更多问答,登录/注册
语法精讲/配套练习+思考题/原生爬虫实战
5.6k 7
2.5k 3
2.2k 4
4.2k 22
2.3k 19