请稍等 ...
×

采纳答案成功!

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

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

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)

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

2回答

提问者 Resun918 2019-09-14 23:58:32
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 回复 有任何疑惑可以回复我~
  • 7七月 #1
    因为你最终返回的是pos,newbos只是作为一个中间变量。
    回复 有任何疑惑可以回复我~ 2019-09-15 04:23:38
  • 提问者 Resun918 回复 7七月 #2
    谢谢七月老师
    回复 有任何疑惑可以回复我~ 2019-09-16 22:17:35
7七月 2019-09-14 05:21:34

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

0 回复 有任何疑惑可以回复我~
  • 提问者 Resun918 #1
    七月老师您好,格式化如下
    
    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 23:58:08
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信