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}

转载于:https://www.cnblogs.com/jackzone/p/6168361.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值