python 全局变量

python全局变量释疑

python全局变量 是定义在函数之外的变量
函数可以使用全局变量的值
但是如果想在函数里改变全局变量的值 需要提前声明
这三句话不好理解 直接上代码

  • 示例一
num = 0 #定义在函数以外 对于函数来说 这就是全局变量

def test():
    a = 1
    num = a + 2 #函数会认为这是局部变量num 而不是全局变量num 
    print(num)

test()
print(num)

结果为
3
0
第一个结果是函数里的print(num),因为这个num在函数test里被赋值,函数会认为这是属于函数自己的局部变量,所以运算结果为2.
第二个结果打印的是全局变量num,并没有被函数引用,所以也没有变化

  • 示例二
num = 0 #定义在函数以外 对于函数来说 这就是全局变量

def test():
    num = num +1 
    print(num)

test()

运行上边代码会报错:

UnboundLocalError: local variable 'num' referenced before assignment

意思是变量num 在赋值之前被使用,为什么会这样,看下边的例子

  • 示例三
num = 0 #定义在函数以外 对于函数来说 这就是全局变量

def test():
    x = num +1 #函数在内部没有找到被赋值的变量num,就去全局变量里找num,所以此处的num为引用的全局变量num值为0, X是此函数的局部变量
    print(x)

test()
print(num)#打印全局变量的值

运行这个代码 能得到结果
1
0
从这里可以看出,全局变量num被函数test()引用了,并参加了计算得到一个新的值付给了函数的局部变量X。

  • 示例四
num = 0 #定义在函数以外 对于函数来说 这就是全局变量

def test():
    global num #声明函数里使用的num 是全局变量
    num = num +1 #此函数里没有定义变量num 所以直接调用全局变量里的num
    print(num)

test()
print(num)#在函数里经过了声明 全局变量的 值也被改变了 此时num =1

这个代码也能够成功运行 结果为
1
1
在函数里使用关键字 global 声明过全局变量之后,在对其进行运算,全局变量的值会被改变

  • 示例五
num = 0 #定义在函数以外 对于函数来说 这就是全局变量

def test():
    num = num +1 #此函数里没有定义变量num 所以直接调用全局变量里的num
    global num #声明全局变量
    print(num)

test()
print(num)

这个运行也会报错

SyntaxError: name 'num' is used prior to global declaration

意思是全局变量num在声明之前被使用
跟示例二的报错还不一样,因为这里虽然声明了,却是在使用之后声明的,也是不对的。应该在使用之前被声明

  • 结论
    由示例二能看出,函数在遇到没被赋值的变量时,会自己去全局变量里找,并把其值导入函数参与运算,但如果想要改变全局变量的值,使用前必须要在函数里进行声明,声明这个变量是全局变量。
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值