在 Python 中,全局变量是指在函数外部定义的变量,它们可以在整个程序中被访问。要在一个函数内部使用或修改全局变量,你需要遵循一些规则。
### 定义全局变量
首先,在函数外部定义一个全局变量:
```python
global_var = 10
```
### 在函数内部读取全局变量
如果只是想在函数内部读取全局变量的值,直接使用变量名即可:
```python
def read_global():
print(global_var) # 直接使用全局变量
read_global() # 输出: 10
```
### 在函数内部修改全局变量
如果需要在函数内部修改全局变量,必须使用 `global` 关键字声明该变量是全局的,否则 Python 会认为这是一个局部变量:
```python
def modify_global():
global global_var # 声明 global_var 是全局变量
global_var = 20 # 修改全局变量的值
modify_global()
print(global_var) # 输出: 20
```
### 注意事项
- 使用 `global` 关键字声明后,该变量在函数内部被视为全局变量,可以对其进行读写操作。
- 如果没有使用 `global` 关键字而直接给变量赋值,则该变量会被视为局部变量,即使它与全局变量同名。
- 过度使用全局变量可能会导致代码难以理解和维护,因此在设计程序时应尽量减少全局变量的使用。
### 示例:使用全局变量的完整例子
```python
# 定义一个全局变量
global_var = 10
# 函数内读取全局变量
def read_global():
print('读取全局变量:', global_var)
# 函数内修改全局变量
def modify_global():
global global_var
global_var = 25
# 调用函数
read_global() # 输出: 读取全局变量: 10
modify_global()
read_global() # 输出: 读取全局变量: 25
```
这在 Python 中使用全局变量字典与使用其他类型的全局变量类似。你可以定义一个全局字典,并在函数内部读取或修改它的值。下面是一些具体的示例,展示了如何操作全局字典。
### 定义全局字典
首先,在函数外部定义一个全局字典:
```python
global_dict = {'key1': 'value1', 'key2': 'value2'}
```
### 在函数内部读取全局字典
如果只是想在函数内部读取全局字典的值,直接使用字典名即可:
```python
def read_global_dict():
print(global_dict['key1']) # 读取全局字典中的值
read_global_dict() # 输出: value1
```
### 在函数内部修改全局字典
如果需要在函数内部修改全局字典,同样需要使用 `global` 关键字声明该字典是全局的:
```python
def modify_global_dict():
global global_dict
global_dict['key1'] = 'new_value1' # 修改现有键的值
global_dict['key3'] = 'value3' # 添加新键值对
modify_global_dict()
print(global_dict) # 输出: {'key1': 'new_value1', 'key2': 'value2', 'key3': 'value3'}
```
### 完整示例
下面是一个完整的示例,展示了如何定义、读取和修改全局字典:
```python
# 定义一个全局字典
global_dict = {'key1': 'value1', 'key2': 'value2'}
# 函数内读取全局字典
def read_global_dict():
print('读取全局字典 key1:', global_dict['key1'])
# 函数内修改全局字典
def modify_global_dict():
global global_dict
global_dict['key1'] = 'new_value1' # 修改现有键的值
global_dict['key3'] = 'value3' # 添加新键值对
# 调用函数
read_global_dict() # 输出: 读取全局字典 key1: value1
modify_global_dict()
read_global_dict() # 输出: 读取全局字典 key1: new_value1
print(global_dict) # 输出: {'key1': 'new_value1', 'key2': 'value2', 'key3': 'value3'}
```
### 注意事项
- 使用 `global` 关键字声明后,该字典在函数内部被视为全局字典,可以对其进行读写操作。
- 如果没有使用 `global` 关键字而直接给字典赋值(例如 `global_dict = {}`),则该字典会被视为局部变量,即使它与全局字典同名。
- 过度使用全局变量(包括字典)可能会导致代码难以理解和维护,因此在设计程序时应尽量减少全局变量的使用。