如何区分全局变量和局部变量?
时间: 2024-09-06 20:00:59 浏览: 59
在Python中,全局变量和局部变量的主要区别在于它们的作用域和生命周期:
1. **作用域**[^1]:
- **全局变量**(global)在整个程序中有效,无论是在哪个函数或代码块中定义的,只要不在该函数内重新定义相同的名称,就可以访问它。
- **局部变量**(local)只在其所在的函数或代码块内部可见。如果函数内部有同名的局部变量,那么这个局部变量会遮蔽外部的全局变量。
2. **生命周期**[^2]:
- **全局变量**在程序开始执行时创建,直到程序结束才销毁。
- **局部变量**则随着函数调用的开始而创建,在函数返回后自动销毁。
**区分方法**:
- 当你在函数内部尝试访问某个变量,如果没有明确指定其作用域(如`global`关键字),那么Python默认查找的是局部变量,只有当找不到时才会去全局作用域寻找。
- 使用`global`关键字可以显式地告知Python你要操作的是全局变量,避免因为作用域覆盖导致的意外结果。
**示例**:
```python
# 定义全局变量
global_var = "I'm global"
def local_test():
# 定义局部变量,这里不会影响全局变量
local_var = "I'm local"
# 如果不使用global,这将操作局部变量
print(local_var) # 输出:"I'm local"
# 使用global来操作全局变量
global global_var
global_var += " (from within function)"
print(global_var) # 输出:"I'm global (from within function)"
local_test()
print(global_var) # 输出:"I'm global (from within function)"
```
阅读全文