python全局变量和局部变量_全局变量,其实就是个共享单车(第29天)

今天用7集的时间,彻彻底底的学了下全局变量。

之前看这部分要占到7集,还挺好奇的,以为有很多新奇的东东。

而实际上,并没有。

来来回回就是在围绕“函数内不允许修改全局变量”展开。

往好了说,就是老师讲的非常细致,对定义强调非常到位。

往不好了说,有点水了。

f98c9ab97f6cb3ce92c3eda37fc4cbf2.png

236集,基本代码演练

全局变量 是在 函数外部定义 的变量,所有函数都可以使用这个变量。

弹幕有个大哥公然开车:苍老师是全局变量,老婆是局部变量。

这么一想,感觉一下子就理解了呢。

47d2746599d2d4331241103cd4e8159a.png

237集,[扩展]PyCharm的单步跟踪技巧

主要讲了调试区域左侧的窗口。

第一行的 demo1,意思是现在执行的是 函数 demo1。

py后面的数字 7 ,代表准备执行的代码行数是第7行。

而第二行 py 后面的 15 ,代表整体程序运行到的位置是第15行。

4b0b5a7a7c3b699b9d39539839cebe32.png

通过左侧窗口,不仅可以看到当前要执行的是哪一行代码,还能知道执行的是哪个函数。

238集,函数内部不允许修改全局变量的值

绝大多数语言不推荐使用全局变量,但是使用全局变量会简化程序开发,因此 python 中对全局变量有些特殊的要求,毕竟可变范围太大,导致程序出错,后期排查是非常困难的。

在函数内部,可以 通过全局变量的引用获取对应的数据。

但是,不允许直接修改全局变量的引用,也就是使用赋值语句修改全局变量的值。

如果使用赋值语句,会在函数内部,定义一个局部变量。

41b765ed1d1539f1067bf4d25cf7f155.png

比如例子中,全局变量 num 与函数 demo1 中的 num 完全没有任何关系。

239集,单步调试确认局部变量的定义

针对236集的程序,使用单步调试,进一步强化函数内部无法修改全局变量的值这一概念。

如果在一个函数内部要想使用一个变量,python的解释器会优先在函数内部查找是否有局部变量,如果有,就直接使用;如果没有找到同名的局部变量,才会向外查找同名的全局变量,如果找到就会继续使用。

f2a2c893cc0ea1f7829f321f219725ed.png

240集,global关键字修改全局变量

如果在函数内部需要修改全部变量的值,需要使用 global 进行声明,告诉解释器,这个变量是全局变量。

再使用赋值语句时,就不会创建局部变量。

038513ebad55a4cd94b8da51756887e6.png

从图可见,当使用了 global 关键字后,选中 num ,则程序中的所有 num 都会高亮。而没使用 global 关键字时,则不会出现此情况。

241集,全局变量定义的位置及代码结构

为了保证所有的函数都能够正确使用到全局变量,应该 将全局变量定义在其他函数的上方。

aeef4bdd83058c05423a8d8e947330f1.png

这其实就是解释器的特点,一行一行去执行。

比如上图,将 全局变量name 定义在了函数demo的下方,解释器运行函数的时候压根就看不到定义的全局变量name,就只能报错了。

因此,在开发时,应该把模块中的所有全局变量,定义在所有函数上方,就可以保证所有函数,都能够正常的访问到每一个全局变量了。

936ffc36e90a069d93be064e916ac8d0.png

242集,全局变量命名的建议

如果局部变量的名字和全局变量的名字相同,PyCharm会在局部变量的下方显示灰色的虚线。

f1b868ecaa5ec18f89179e8a8fb52e11.png

为了避免局部变量和全局变量出现混淆,在定义全局变量的时候,有些公司会有一些开发要求,比如:全局变量名前应该加 g_ 或者 gl_ 的前缀。

当然,不同的公司要求可能会不一样的。

不过这点对于只把 python 当爱好、没指望用它吃饭的人来说,应该不是啥问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值