这里的pos需要声明nonlocal,为什么new_pos不需要申明

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

Resun918

2019-09-13

origin = 0

def toutur(pos):
def go(step):
nonlocal pos
new_pos = pos + step
pos = new_pos
print(pos)
return pos
return go

tourist = toutur(origin)
tourist(2)
tourist(3)
tourist(6)

写回答

2回答

Resun918

提问者

2019-09-14

origin = 0

def toutur(pos):
    def go(step):
        nonlocal pos
        new_pos = pos + step
        pos = new_pos
        print(pos)
        return pos
    return go

tourist = toutur(origin)
tourist(2)
tourist(3)
tourist(6)


0
2
Resun918
回复
7七月
谢谢七月老师
2019-09-16
共2条回复

7七月

2019-09-14

麻烦格式化下,不格式化看不懂代码。

0
1
Resun918
七月老师您好,格式化如下 origin = 0 def toutur(pos): def go(step): nonlocal pos new_pos = pos + step pos = new_pos print(pos) return pos return go tourist = toutur(origin) tourist(2) tourist(3) tourist(6)
2019-09-14
共1条回复

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

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

14773 学习 · 4487 问题

查看课程