在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的情况通常与循环本身没有直接关系,但是可能与循环中需要修改的全局状态有关。
不过,使用全局变量可能会导致程序状态难以追踪和维护,因此在设计程序时应谨慎使用。如果可能,尽量使用局部变量和函数返回值来避免全局状态的修改。
谢谢你耐心地看完我的文字,说明我们的脑洞相当,如果不介意的话,动动你的小手给我点个赞呗,如果你喜欢这种风格的脑洞,咱可以评论区见哇~