zoukankan      html  css  js  c++  java
  • Python 局部变量与全局变量

    本来以为 局部变量就是在函数/def/class/lambda内部的变量,全局变量就是在之前这些之外的变量。但是,再一次学习Python atm 中应用时发现了一次特例(意外)

    字典中 在函数内部改变 其部分值之后,在函数外打印字典,字典的值竟然改变了。

    x = {"w":1,"k":2}
    
    def a(x):
       
        x["w"] = 123
        x = {"w":999,"k":3433}
        return x
    
    def v():    
        c = a(x)
        print(x)
    
    v()    

    于是上网搜了一下 Python 全局变量与局部变量定义

    1.定义的函数内部的变量名如果第一次出现,且在 = 前 那么就认为被定义的函数是局部变量,不论是否全局变量中是否用到该函数名

    num = 10
    
    def func():
         num  = 19
         print(num) #值为19
    func()
    print (num) #值为10

    再者

    num = 10
    
    def func():
         num  = num + 19
         print(num) 
    func()
    print (num)

    将报错 :unboundlocalerror

    num = 10
    
    def func(num):
         num  = num + 19
         print(num) 
    
    func(num)
    print (num)

    在函数中传入参数则不会, 此时 num在函数中是全局变量

    2. global 声明全局变量

    d = 6
    
    def a():
    
        global d
    
        print(d)
        d = d + 2131
    
        
    
    def v():
        
        c = a()
    
        print(d)
    
    
    v()    

    在函数内部声明global之后,修改d的值,则全局变量值改变。(此函数不能传入参数d,否则global d则会报错)

    3.有时候想在函数内部引用全局的变量,疏忽就会出现下列错误:

    var = 1
    
    def fun():
        print(var)
        var = 300
    
    print(fun())
    
    ------------------------------------------
    
    var = 2
    
    def fun():
        var =var + 2
        return var
    print(fun())

    4.字典

    x1 = {"w":1,"k":2}
    x2 = {"o":3,"p":2}
    def a(x2):
        
        x1["w"] = 123
        x2 = {"o":999,"p":343}
    
        return x1,x2
    
    def v():
        
        c = a(x2)
    
        print(x1,x2)
    
    
    v()    

    {'k': 2, 'w': 123} {'p': 2, 'o': 3}

    x1 = {"w":1,"k":2}
    x2 = {"o":3,"p":2}
    def a(x1,x2):
        
        x1["w"] = 123
        x2 = {"o":999,"p":343}
    
        return x1,x2
    
    def v():
        
        c = a(x1,x2)
    
        print(x1,x2)
    
    
    v()    

    输出值:{'k': 2, 'w': 123} {'p': 2, 'o': 3}

  • 相关阅读:
    内存跟硬盘的区别
    MCU在电动滑板车硬件实物的设计技巧
    MCU微控制器在电动滑板车技术核心剖析
    ​FRAM技术简介
    FRAM作为代码存储器应用中的单芯片解决方案
    ​内存技术词汇表
    NV-SRAM与BBSRAM之间的比较
    非易失性存储器NV-SRAM的关键属性
    游戏机电池供电的SRAM解决方案
    个人学期期末总结和对王建民老师的评价
  • 原文地址:https://www.cnblogs.com/jackzone/p/6168361.html
Copyright © 2011-2022 走看看