10.md 1.7 KB
Newer Older
W
init  
wizardforcel 已提交
1 2 3 4 5
# 全局和局部变量

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

变量有两种类型:**全局变量****局部变量**
W
wizardforcel 已提交
6
全局变量可以在代码中的任何位置访问,局部变量只能在[作用域](https://pythonspot.com/scope/)中访问。
W
init  
wizardforcel 已提交
7 8 9

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

W
wizardforcel 已提交
10
可以在代码中的任何位置访问和修改**全局变量**`x`),**局部变量**`z`)仅存在于块 3 中。
W
init  
wizardforcel 已提交
11 12 13

## 局部变量

W
wizardforcel 已提交
14
局部变量只能在其作用域内达到。下面的示例有两个局部变量:`x``y`
W
init  
wizardforcel 已提交
15 16 17 18 19 20 21 22 23 24 25 26

```py

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

print(sum(8,6))

```

变量 x 和 y 只能在函数 sum 之内使用,而在函数外部则不存在。
W
wizardforcel 已提交
27
局部变量不能在其作用域之外使用,此行将不起作用:
W
init  
wizardforcel 已提交
28 29 30 31 32 33 34 35 36

```py

print(x)

```

## 全局变量

W
wizardforcel 已提交
37 38
全局变量可以在代码中的任何位置使用。
在下面的示例中,我们定义了全局变量z
W
init  
wizardforcel 已提交
39 40 41 42 43 44 45 46 47 48 49 50 51 52

```py

z = 10

def afunction():
    global z
    print(z)

afunction()
print(z)

```

W
wizardforcel 已提交
53
全局变量`z`可以在整个程序中,函数内部或外部使用。可以在函数内部修改全局变量,并为整个程序进行更改:
W
init  
wizardforcel 已提交
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69

```py

z = 10

def afunction():
    global z
    z = 9

afunction()
print(z)

```

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

W
wizardforcel 已提交
70
## 练习
W
init  
wizardforcel 已提交
71

W
wizardforcel 已提交
72
局部变量和全局变量可以在同一程序中一起使用。尝试确定该程序的输出:
W
init  
wizardforcel 已提交
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92

```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/)