用python代码举例讲解一下global与nonlocal的用法
时间: 2023-09-09 18:05:23 浏览: 145
### 回答1:
Python中的global和nonlocal可以让你在函数内部使用和更改全局变量和外部作用域中的变量。Global:global用于在函数内部声明全局变量,即使在函数内部也可以访问该变量。例如:x = "global"
def foo():
global x
x = "local"
print("x inside :", x)
foo()
print("x outside:", x)结果:x inside : local
x outside: localnonlocal:nonlocal用于在函数内部修改外部作用域中的变量,即使在函数内部也可以访问和修改该变量。例如:x = "global"
def outer():
x = "outer"
def inner():
nonlocal x
x = "inner"
print("x inside :", x)
inner()
print("x outside:", x)
outer()结果:x inside : inner
x outside: inner
### 回答2:
global与nonlocal都是python中用于在函数内部访问外部变量的关键字。
首先,我们来看一下global关键字的用法。当我们在函数内部想要修改全局变量时,需要使用global关键字。下面是一个例子:
```python
x = 10
def modify_global():
global x
x = 20
modify_global()
print(x) # 输出为20
```
在这个例子中,通过在函数定义内使用`global x`,我们告诉python在函数内部修改的`x`是全局变量`x`,而不是在函数内部定义的局部变量。
接下来,我们来看一下nonlocal关键字的用法。当我们在嵌套函数中想要修改外部函数的局部变量时,需要使用nonlocal关键字。下面是一个例子:
```python
def outer():
x = 10
def inner():
nonlocal x
x = 20
inner()
print(x) # 输出为20
outer()
```
在这个例子中,通过在内部函数定义内使用`nonlocal x`,我们告诉python在内部函数中修改的`x`是外部函数`outer()`中的局部变量,而不是在内部函数中定义的局部变量。
总结一下,global关键字用于在函数中修改全局变量,nonlocal关键字用于在嵌套函数中修改外部函数的局部变量。
### 回答3:
global关键字和nonlocal关键字都是用于访问外部作用域的变量,但它们之间有一些关键的区别。
首先,我们先了解一下global的用法。当我们在函数内部定义一个变量时,默认情况下它是局部变量,只在函数内部有效。如果需要在函数内部改变一个全局变量的值,我们就需要用到global关键字。下面是一个示例:
```python
count = 0
def increment():
global count
count += 1
print(count) # 输出0
increment()
print(count) # 输出1
```
在上面的例子中,我们声明了一个全局变量count,并定义了一个函数increment来增加count的值。在函数内部,我们使用global关键字告诉Python,count是一个全局变量,而不是一个局部变量。这样,在我们调用increment函数后,count的值会被成功增加。
接下来,我们来看一下nonlocal的用法。nonlocal关键字用于在嵌套函数中访问上一级非全局作用域中的变量。在Python中,我们可以在函数内部定义另一个函数,这就是嵌套函数。下面是一个嵌套函数的例子:
```python
def outer():
x = "hello"
def inner():
nonlocal x
x = "world"
print("inner:", x)
inner()
print("outer:", x)
outer()
```
在上面的例子中,我们定义了一个外部函数outer,它内部定义了一个局部变量x。然后,我们定义了一个嵌套函数inner,在inner函数内部,我们使用nonlocal关键字告诉Python,x是在外部函数中定义的变量。这样,在我们调用inner函数后,x的值会被成功改变。运行上面的代码,会输出"inner: world"和"outer: world"。
综上所述,global用于访问全局作用域中的变量,而nonlocal用于访问上一级非全局作用域中的变量。使用这两个关键字能够更灵活地操作不同作用域中的变量。
阅读全文