1.全局变量:无缩进的变量,在整个代码中任意位置都可以调用
2.局部变量:在子程序中设置的有缩进的变量,只能在子程序中调用
3.局部变量与全局变量重名时,互相不影响,局部变量总是先从自己等层次的代码块中寻找,找不到在从外面一层找
4.一般全局变量设置成大写形式,而局部变量设置成小写,便于区分
5.例一:
1 def test(): 2 print(name) 3 test() #输出‘alex’
name = 'alex'
def test():
name = 'pig'
print(name)
test() #输出pig
6.在子程序中想修改全局变量时,可引入 global
name = 'alex' def test(): global name name = 'pig' print(name) test() #输出pig
7.函数嵌套
name = 'alex'
def test():
name = 'pig'
def test_1():
name_1 = 'cat'
print(name_1)
def test_2():
name_2 = 'dog'
print(name_2)
test_2()
print(name)
test_1()
test() #依次输出pig,cat,dog
8.前向引用 :函数即变量
函数之间互相引用时,不在乎函数的顺序,因为调用时均在内存里,但是由于执行命令是有顺序,执行的命令应在所涉及的所有函数之后,否则读取不到,会报错。如:
1 def test(): 2 name = 'Mike' 3 print(name) 4 test_1() 5 def test_1(): 6 name = 'John' 7 print(name) 8 test() 9 def test_1(): 10 name = 'John' 11 print(name) 12 def test(): 13 name = 'Mike' 14 print(name) 15 test_1() 16 test() 17 def test(): 18 name = 'Mike' 19 print(name) 20 test_1() 21 test() 22 def test_1(): 23 name = 'John' 24 print(name) #会报错,上面两个输出一样
9.改变上一级变量,使用 nonlocal
def test(): name = 'John' print(name) def test_1(): nonlocal name name = 'Mary' print(name) test_1() test() #输出John,Mary
10.全局变量不管在哪个子程序中始终可以修改(global形式)