python设置全局变量_学Python编程不可不知:全局变量与局部变量

两者定义

接触过其他编程语言的,对变量肯定不陌生,而真正能理清楚全局变量与局部变量则又是一个层次的问题了。

从字面意思其实不难理解区分。全局表示在整个程序的所有代码块中可以被使用,而局部表示在某些特定的范围内才可以被使用。

这完全正确!但很多理论性的东西只要被放置到具体场景后,其理解的难度就是几何指数倍增。

4b90f603738da9779169c3548d0b4a1c8718e3ef.jpeg?token=eb343d2c5e852ab63cf3fc67c50b1c90&s=0A24782283BD4D8A4E5CC5DE000080B1

场景假设

大家在学生时代,大部分的人肯定都碰到这样的一种情况。

班级上有同名的同学,或者同一个姓名(假设为:李飞)可能是被本班级同学所用,也可能是其他班级的某个学生或老师所用。

而下面两种情况也肯定是常发生的情况:

1、当本班级老师叫李飞上黑板做题时,大家肯定知道叫的是本班级的李飞,而不是其他叫“李飞”的人;

2、如果学校广播中喊“李飞,校门口有人找你”时,如果不指定某班级、限定学生或教师,这肯定让所有叫“李飞”的人很茫然。

c8ea15ce36d3d53942874dec07dd5b55342ab0c3.jpeg?token=9cf6bdf157eb206d13f2593ebda0d310&s=2EE261DBC8D24BF300B5F0500300D073

代码案例

对学习编程的人来说,动手是最好的学习方式之一。这里我们就自己动手写写代码,实现上面场景。

b812c8fcc3cec3fd23be6f0febd2663a869427ac.jpeg?token=10213a04ed493b5c6903b28315c61514&s=6140BB425BE4976C5CF08C0B0000E0C0

1、从案例中可以看到定义了两个都叫name的变量,只是一个在函数外部,一个在函数里面。

2、函数Dianming内部有两次打印name值。

3、函数Dianming被调用后,还判断name的值是否为“李飞”。

看看程序执行效果:

377adab44aed2e738f4aaf76b95b138e86d6faac.jpeg?token=3741e4db2889ea368c812450737ef692&s=4E40E012118841435455ACCE000050B3

1、函数Dianming内部的name变量被置空后,print(name)得到是空行;

2、IF语句打印的结果读取出了“李飞”。

结论:从上面两点可以判断出,函数使用的是内部的name变量值,并且内部变量name值的改变不会引起外部变量name值的变化。

现在就是另外一个问题:既然全局变量在整个程序中可以被使用,如果碰到与局部变量同名时,该如何区分是全局变量呢?

我们将上述代码做一些改动:在函数中增加了“global name”。

8326cffc1e178a82b25a4c1dc959c188a877e88c.jpeg?token=c25e8393c80483c240a25dc7e16bf769&s=E1703BC65BE48F681C59F4070200F0C0

再来看看执行效果:

cf1b9d16fdfaaf519224f4c3b10e26ebf11f7a62.jpeg?token=6037910a124e28a5502f70930c2b09cf&s=6CC0E41A85384423067DA1D90000C0B1

结论:global可以实现在局部变量作用域先执行全局变量,并且此时name值的变更是全局变量值的变更。

总结

1、全局变量与局部变量的本质差别在于两者作用域不同,全局变量是整个程序都可以调用,具备变量只有某部分范围可以被调用;

2、局部变量值的改变不会引起全局变量值的变化;

3、通过global关键词,可以在局部变量作用域中提升全局变量的级别,即先执行全局变量。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值