python nonlocal和global
时间: 2024-10-19 10:10:41 浏览: 30
在Python中,`nonlocal` 和 `global` 关键字用于控制变量的作用域。它们分别对应于不同级别的作用域:
1. **`global`**:当你需要在一个函数内部访问并修改外部(全局)变量时,可以使用 `global` 关键字声明。它告诉 Python 解释器,这个变量实际上是在函数外部定义的,不是局部变量。语法如下:
```python
def global_func():
global var_name # 声明这是一个全局变量
var_name = "I'm a global value"
global_var = "This is a global variable"
global_func()
print(global_var) # 输出:"I'm a global value"
```
2. **`nonlocal`**:如果你在嵌套函数中想要访问并修改外部非全局的上一级作用域(即闭包或嵌套函数的上级函数)的变量,就需要使用 `nonlocal`。例如:
```python
def outer_func():
inner_var = "Inner function's local"
def inner_func():
nonlocal inner_var # 声明这是外层函数的一个变量
inner_var = "Modified by inner function"
inner_func()
print(inner_var) # 输出:"Modified by inner function"
outer_func()
```
这两个关键字的存在是为了避免因变量名冲突而产生的歧义,特别是在处理嵌套作用域时。
阅读全文