nonlocal 声明外层非全局变量
最后更新:2026-09-22
nonlocal 声明外层非全局变量
nonlocal name 告诉函数体内 name 引用最近外层(但非全局)作用域的变量。
| 分类 | 关键字与语句 |
|---|---|
| 类型 | 关键字与语句 |
| Python 版本 | all |
📝 语法
nonlocal name [, name]*
▶ 示例
编辑下方代码,点击运行,在输出面板查看结果:
运行结果:
1 2
🏷️ 相关关键字与语句
💡 相关案例
更多实战案例即将上线,敬请期待。
❓ 常见问题
Q嵌套函数里不写 nonlocal 直接改外层变量会怎样?
A会在内层函数创建同名的局部变量,外层变量的值不会变,甚至可能报 UnboundLocalError。想要修改外层变量,必须先用 nonlocal 声明。
Qnonlocal 能指向全局变量吗?
A不能。nonlocal 必须绑定到某个外层函数作用域里已存在的变量;如果外层根本没有这个变量,会报 SyntaxError: no binding for nonlocal 'x' found。
Qnonlocal 和 global 能同时用吗?
A能,但只能针对不同的名字。同一个名字不能同时声明为 global 和 nonlocal,那样会报 SyntaxError。