理解并避免在Python中使用全局变量的陷阱
在全球变量(global variables)的概念中,Python与其他编程语言的一个主要区别是,它默认情况下不会创建全局变量。每个函数或者代码块内部定义的变量都是局部变量。
然而,在以下情况,我们可能会意外地创建了全局变量:
- 在函数外部直接赋值给一个未声明为全局的变量。
```python
my_var = 10 # 这会创建一个局部变量
def func():
global my_var # 这句是让Python意识到my_var是一个全局变量
print(my_var) # 输出:10
func() # 输出:10
2. 使用`nonlocal`关键字声明一个非局部变量。
```python
def func():
nonlocal my_var
my_var = 20 # 这会创建一个非局部变量
func()
print(my_var) # 输出:20
避免使用全局变量的主要策略是尽量让数据在函数内部或者类的属性中被管理。如果确实需要跨函数的数据共享,可以考虑使用类和对象,或者return
值来传递数据。
还没有评论,来说两句吧...