全局变量:作用域为整个pytion文件,都可调用,为大家的公共情人。a.不使用global的时候本身第一层不能被修改,若为list,dict等可变类型,内部元素可以修改,增加。b.使用global,想怎么改就怎么改。

局部变量:在某个函数内部声明的,只能在函数内部使用,如果超出使用范围(函数外部),则会报错。包括子函数和传入的参数

1.优先寻找局部变量,若本层不存在则寻找上一层的变量,本层的命令不会执行到往下一层函数的变量

#内部函数的变量不会执行
name='lyf'
def test():
    name ="wpq"
    def test_1():
        name="ss"
        def test_1_1():
            name="bb" #test_1_1没被执行,name="bb"不会执行
        print(name)
    test_1()
test()
print(name)

 

python局部变量如何被外部调用 python中局部变量_子函数

name='lyf'
def test():
    name="wpq"
    def test_1():
        def test_1_1():
            name="bb"
        print(name)#本层不存在name,寻找上一层name打印
    test_1()
test()
print(name)

python局部变量如何被外部调用 python中局部变量_局部变量_02

 2.函数内修改全局变量用global,global+变量,和变量赋值必须分两行,写在一起会报错

name='lyf'
def test():
    global name
    name="wpq"
    def test_1():
        name="ss"
        def test_1_1():
            name="bb" #test_1_1没被执行,name="bb"不会执行
        print(name)
    test_1()
test()
print(name)

python局部变量如何被外部调用 python中局部变量_子函数_03

在函数内部,globel修改后,全局变量就被修改,后面其它函数调用的global都是修改后的变量

name = 'lyf'

def test():
    global name
    name = "wpq"
    print(name)

def test_1():
    print(name)#test先执行,全局变量已经被修改,后执行test——1,输出的是修改后的变量

test()
test_1()

 

python局部变量如何被外部调用 python中局部变量_局部变量_04

3.函数内不使用golbal,修改list,dict的元素

注意:list,dict本身不能被修改

name = ['lyf',1]
dict_1={1:"a",2:"b"}
def test():
    name.append("aa")
    dict_1.update({3:"cc"})
test()
print(name)
print(dict_1)

python局部变量如何被外部调用 python中局部变量_子函数_05

 

4.为了区分全局变量和局部变量,一般全局变量字母大写,局部变量字母小写。

 nonlocal——指定上一级变量