全局变量定义与特征
全局变量一旦设置在整个.py文件内都可以调用,顶头写,规范为变量名全部大写。
NAME = "Alex"
def test():
print(NAME)
test()
局部变量定义与特征
局部变量只在某个子程序(函数)内可以被调用,函数结束后局部变量内存被释放,规范为小写。
locals()表示当前作用域所有的局部变量和当前作用域的函数(函数即变量)
NAME = "Alex"
def test():
NAME = "YY"
print(NAME)
test()
print(NAME)
def test(name):
a = "Lucky"
def test1():
print("from test1")
print(locals())
test('MB')
global语句
在某个函数的内部代码块写入 global变量名 的语句,表示此处引用全局变量中的该变量,此时在该函数内对该变量进行修改将会将该修改作用到全局的该变量。如果不用global结构则只可以对全局变量进行修改(如果该全局变量是可修改类型)。
globals()代表所有的全局变量
NAME = "Alex"
def test():
global NAME
NAME = "YY"
print(NAME)
test()
print(NAME)
NAME = ["MB", "YY", "Alex"]
def test():
NAME.append("Lucky")
print(NAME)
test()
print(NAME)
name = "YY"
def test():
print("from test")
print(globals()) # 此时会打印所有的全局变量,注意此处会打印test函数(函数即变量)
nonlocal语句
在某个子程序内使用 nonlocal变量名 的语句,表示此处表示此处引用上一级程序中的该变量,此时在该函数内对该变量进行修改将会将该修改作用到整个上一级的该变量。如果不用nonlocal结构则只可以对上一级变量进行修改(如果该上级变量是可修改类型)。
def test1():
name = "YY"
print(name)
def test2():
nonlocal name
name = "Lucky"
print(name)
test2()
print(name)
test1()
def test1():
name = ["YY", "MB"]
print(name)
def test2():
name.append("Lucky")
print(name)
test2()
print(name)
test1()