liaoyifu

全局变量:作用域为整个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)

 




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

 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)

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

name = \'lyf\'

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

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

test()
test_1()

 

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)

 

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

 nonlocal——指定上一级变量

 

分类:

技术点:

相关文章:

  • 2021-10-14
  • 2021-11-05
  • 2021-11-05
  • 2021-11-05
  • 2021-04-29
  • 2020-02-27
猜你喜欢
  • 2021-11-15
  • 2021-12-26
  • 2021-11-15
  • 2021-10-14
  • 2021-10-24
  • 2021-10-14
  • 2021-11-15
相关资源
相似解决方案