为什么在非闭包的解决方案中,global 改成nonlocal以后会报错?

来源:11-17 小谈函数式编程

weixin_慕勒4393907

2020-03-21

SyntaxError: no binding for nonlocal ‘origin’ found

写回答

2回答

weixin_慕勒4393907

提问者

2020-03-22

origin = 0

def f(dx):

    nonlocal origin

    x = origin + dx

    origin = x

    return x

print(f(2))

print(f(3))

print(f(6))


0
0

7七月

2020-03-21

麻烦贴下完整代码

0
5
程序媛小胡
回复
weixin_慕勒4393907
百度了一下,global适用于函数内部修改全局变量的值,而nonlocal适用于嵌套函数中内部函数修改外部变量的值,使用global关键字修饰的变量之前可以并不存在,而使用nonlocal关键字修饰的变量在嵌套作用域中必须已经存在,否则会报错。
2020-05-15
共5条回复

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

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

14640 学习 · 4477 问题

查看课程

相似问题