最近总是变量的访问的范围,搞的我很迷茫,故此总结一下。
全局变量和局部变量
- 访问:变量就近访问原则
- 修改:只能修改自己域内的变量
key = "全局变量"
def func():
print(key) # 全局变量
func()
print(key) # 全局变量
key = "全局变量"
def func():
key = "局部变量"
print(key) # 局部变量
func()
print(key) # 全局变量
key = "全局变量"
def func1():
key = "局部变量1"
print(key) # 局部变量1
def func2():
key = "局部变量2"
print(key) # 局部变量2
func2()
print(key) # 局部变量1
func1()
print(key) # 全局变量
global 关键字可在局部修改全局变量
key = "全局变量"
def func():
global key
key = "局部变量"
print(key) # 局部变量
func()
print(key) # 局部变量
代码块中的临时变量
代码块中的临时变量可在代码块外使用,注意和函数中的局部变量区分开。
for i in range(3):
print(i)
a = 1000
print(i)
print(a)
self 定义的变量范围
类变量当被修改后,全局的该类变量都会被修改。
这与全局变量和局部变量的访问、修改从逻辑上是不同的。
b = 20
class T:
b = 4
def __init__(self):
self.a = 3
def func1(self):
self.a = 100
T.b = 4000
def func2(self):
print(self.a) # 100
print(T.b) # 4000
t = T()
t.func1()
t.func2()
print(b) # 20