• puthon-变量(局部变量与全局变量)


    局部变量 局部变量的作用范围为函数内部
    1 def  test1():
    2     a = 200 #局部变量只能在该函数中使用(它的作用范围在该函数里面)
    3     a+=1
    4     print('a的值为%s'%a)
    5 
    6 test1()
    7 print(a)
    8 #NameError: name 'a' is not defined

    全局变量与局部变量 全局变量能在后面的代码中使用
    a = 400
    def  test1():
        a = 200 #局部变量只能在该函数中使用(它的作用范围在该函数里面)
        a+=1
        print('a的值为%s'%a)
    
    def  test2():
        #a = 300 注意这里的a+=1出现会报错,因为局部变量a在引用前没有被定义
    print('a的值为%s'%a) test1()#a的值为201 print(a)#400 test2() #a的值为400 全局变量,可以在后面的代码中使用
    全局变量与局部变量在参数传递中的存在的问题
    1
    a=400 2 def test1(): 3 a = 200 #局部变量只能在该函数中使用(它的作用范围在该函数里面) 4 a+=1 5 print('a的值为%s'%a)
        return a
    7 def test2(a): 8 #a = 300 9 10 print('test2a的值为%s'%a) 11 12 b=test1()#此时b输出结果为:a的值为201 13 test2(b)#此时报错test2() missing 1 required positional argument: 'a',因此需要在test1中返回a 14 print(a)

     a=400
     2 def  test1():
     3     a = 200 #局部变量只能在该函数中使用(它的作用范围在该函数里面)
     4     a+=1
     5     print('a的值为%s'%a)
        return a 7 def test2(a): 8 #a = 300 9 10 print('test2a的值为%s'%a)
    12 b=test1()#此时b输出结果为:a的值为201
    13 test2(b)# test2() takes 0 positional arguments but 1 was given 需要传入一个参数a

    局部变量中对原变量进行修改(列表&字典)(可变类型)
    name = ["zhangsan","lisi","wangwu"]
    student= {"name":"laowang"}
    def test1():
    print("原始的全局变量为:%s"%name)
    name[1] = "yasuo"
    student["age"] = 236
        
    
    test1()                 #result: 原始的全局变量为:['zhangsan', 'lisi', 'wangwu']
    print(name)              #result: ['zhangsan', 'yasuo', 'wangwu']
    print("现在的全局变量为%s"%name)   #result: 现在的全局变量为['zhangsan', 'yasuo', 'wangwu']
    在的全局变量student为%s"%student)   #result:现在的全局变量为student{'name': 'laowang', 'age': 236}
    
    
    局部变量对与全局变量同名函数定义,对全局变量不产生影响,需global声明(不可变类型)
    name = ["zhangsan","lisi","wangwu"] a= "laogao" def test1(): print("原始的全局变量为:%s"%name) name[1] = "yasuo" a = "zed"#在局部变量中定义了a的函数 test1() print("现在的全局变量为%s"%name) print(a) #result laogao

    
    
    global的用法
    name = ["zhangsan","lisi","wangwu"]
    a= "laogao"
    b = 122
    def   test1():
        print("原始的全局变量为:%s"%name)
        name[1] =  "yasuo"
        global a 
        a = "zed"
        global b
        b+=1
    test1()
    print("现在的全局变量为%s"%name)
    print(a,b)
    
    

    在函数中修改全局变量:1.如果是可变类型可以执行修改变量的值。2.如果全局变量是不可变类型,如果想要在函数中修改不可变类型,其实本质上是修改不可变类型的全局变量的引用(指向),加global就可以修改不可变类型的引用(可变的不考虑)

     
  • 相关阅读:
    @3 UOJ428 & UOJ461 & UOJ671
    DZY Loves Chinese II
    [冲刺国赛2022] 模拟赛12
    [冲刺国赛2022] 模拟赛11
    【记录】将labelme json文件转为mask掩模图
    两阶段深度学习中的两阶段是指什么意思?
    Docker(一)安装、介绍、镜像、容器与仓库
    C++ Primer Plus 学习 (一)C++介绍与数据处理
    C++ 疑问合集
    遇到ImportError: cannot import name ‘soft_unicode’ from 'markupsafe’问题
  • 原文地址:https://www.cnblogs.com/yescarf/p/12107154.html
Copyright © 2020-2023  润新知