全局变量与局部变量

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形式)

原文地址:https://www.cnblogs.com/lzjdsg/p/10146480.html