【Python】函数内的全局变量关键字gobal值,在函数外调用,有块“免死金牌”

在python世界里,全局变量global关键字,在函数间的跳转,就像是被赋予独立于体系的全局者,拥有一块“免死金牌”。

他拥有一种特权——它只是函数内部的对象,但是却能在函数外,亮出自己身份的全局变量!!!

他,虽然是某个函数的内部员工,却游离于系统之外;他就像是一个不断穿衣服的客人,会因为环境改变他的内容,改变面貌。

自他被承认是一个全局变量以后,他就像一只神秘的侠客,不再受限于某个组-织 函数, 而是会跟随着每一次循环,卷入江湖的风风雨雨 ,随着其中的判断条件、计算变换,不断迭代他原本的值,也就是从内而外地改变他自己。

如果gobal赋予的对象——index,赐予他全局变量的身份。假设他的初始值是0,他要在循环中,完成多个函数间跳转的任务。

在后面的循环中,他在函数和循环间,运行产生新的index值,迭代原来的值,global的功能就是这样的。

在最后跳出循环后,index已经是经过多轮循环后,身经百战,却饱含沧桑的样子。(你可以想象他就是这样子滴)↓
在这里插入图片描述

而像他那样跳入循环前的兄弟(在循环前被定义的值),如果没有全局变量的“免死金牌”,他们在函数的跳转事,则会经过重重关卡的限制:

UnboundLocalError: local variable ‘XX’ referenced before assignment

一起来围观一下这个悲惨的故事吧:

counter = 0  # index的兄弟counter 

def increment():
    counter += 1

while counter < 5:
    increment()
    print(counter) 

在这里插入图片描述

这个故事告诉我们:
没有那个能耐就不要逞强 ,在进入while循环前,玩家们都要注意自己是不是函数的内部人员,如果是的话,就不要在其他地方未经过声明,随意print出他的身份出来了。

让我们看看,被赋予了全局身份的index,会有怎样的境遇吧:

index = 0  # index是一个全局变量

def increment():
    global index  # 声明index为全局变量
    index += 1

while index < 5:
    increment()
    print(index)

最后在返回结果的时候,全局变量global所赋予的index值, 他不再只是函数内的数据人,而是贯穿整个while循环,最后完成了他的蜕变。

通过在 increment 函数中使用 global counter,我们告诉Python index 不是局部变量,而是外部定义的全局变量。

关于gobla的对象的说法:

在编程中,global 关键字用于在函数内部声明变量为全局变量。这意味着该变量不是局部于函数的,而是可以在程序的任何地方访问和修改的。
在循环中,使用 global的情况通常与循环本身没有直接关系,但是可能与循环中需要修改的全局状态有关。
不过,使用全局变量可能会导致程序状态难以追踪和维护,因此在设计程序时应谨慎使用。如果可能,尽量使用局部变量和函数返回值来避免全局状态的修改。

谢谢你耐心地看完我的文字,说明我们的脑洞相当,如果不介意的话,动动你的小手给我点个赞呗,如果你喜欢这种风格的脑洞,咱可以评论区见哇~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值