# 全局和局部变量

> 原文： [https://pythonspot.com/global-local-variables/](https://pythonspot.com/global-local-variables/)

变量有两种类型：**全局变量**和**局部变量**。全局变量可以在代码中的任何位置访问，局部变量只能在[作用域](https://pythonspot.com/scope/)中访问。

![global-local-variable](img/b096b6df86baa4af3f1d9b86a8b57af2.jpg)

可以在代码中的任何位置访问和修改**全局变量**（`x`），**局部变量**（`z`）仅存在于块 3 中。

## 局部变量

局部变量只能在其作用域内达到。下面的示例有两个局部变量：`x`和`y`。

```py

def sum(x,y):
    sum = x + y
    return sum

print(sum(8,6))

```

变量`x`和`y`只能在函数`sum`之内使用，而在函数外部则不存在。局部变量不能在其作用域之外使用，此行将不起作用：

```py

print(x)

```

## 全局变量

全局变量可以在代码中的任何位置使用。在下面的示例中，我们定义了全局变量`z`

```py

z = 10

def afunction():
    global z
    print(z)

afunction()
print(z)

```

全局变量`z`可以在整个程序中，函数内部或外部使用。可以在函数内部修改全局变量，并为整个程序进行更改：

```py

z = 10

def afunction():
    global z
    z = 9

afunction()
print(z)

```

调用`afunction()`之后，将更改整个程序的全局变量。

## 练习

局部变量和全局变量可以在同一程序中一起使用。尝试确定该程序的输出：

```py

z = 10

def func1():
    global z
    z = 3

def func2(x,y):
    global z
    return x+y+z

func1()
total = func2(4,5)
print(total)

```

[下载 Python 练习](https://pythonspot.com/download-python-exercises/)