1 / 4
文档名称:

python中global用法实例分析.pdf

格式:pdf   大小:139KB   页数:4页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

python中global用法实例分析.pdf

上传人:鼠标 2023/6/5 文件大小:139 KB

下载得到文件列表

python中global用法实例分析.pdf

相关文档

文档介绍

文档介绍:该【python中global用法实例分析】是由【鼠标】上传分享,文档一共【4】页,该文档可以免费在线阅读,需要了解更多关于【python中global用法实例分析】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。python中globa?l法实例分析???????lob语a句l是适?于当前整个代码块的声明。它是全局变量的标识符。如果某名字在局部名字空间中没有定义,?就?动使?相应的全局名字.?没有global是不可能?动指定??global?中出现的名字不能在global?之前的代码中使?.在?global?中出现的名字不能作为形参,?不能作为循环的控制对象,?不能在类定义,?函数定义,?、global---将变量定义为全局变量。可以通过定义为全局变量,实现在函数内部改变变量值。2、?个global语句可以同时定义多个变量,如?global?x,?y,?z>>>?def?func():...???global?x...???print?'x?is?',?x...???x?=?2...???print?'Change?local?x?to?',?x...>>>?x?=?50>>>?func()x?is?50Change?local?x?to?2global语句的作?:???????在编写程序的时候,如果想为?个在函数外的变量重新赋值,并且这个变量会作?于许多函数中时,就需要告诉python这个变量的作?域是全局变量。此时?global语句就可以变成这个任务,也就是说没有?global语句的情况下,是不能修改全局变量的。???????在python的函数使?时,经常会碰到参数定义的问题。如果不声明全局变量,会报错count?=?1():?count?=?count+1cc()Traceback?(most?recent?call?last):File?"",?line?1,?in??cc()File?"",?line?2,??count?=?count+1UnboundLocalError:?local?variable?'count'?referenced?before?assignment????????意思是说count为局部变量,在使?它之前没有被赋值。在函数内?法直接使?全局变量。num?=?1id(num)Out[31]:?1886744032():?num?=?2?print(id(num))?print(num)cc()**********????????可以看出函数??的num是局部变量,有什么办法能在函数内使?全局变量呢?根据官??档,可以?global语句:?global?statement?is?a?declaration?which?holds?for?the?entire?current?code?block.?It?means?that?the??identifiers?are?to?be?interpreted?as?globals.?It?would?be?impossible?to?assign?to?a?global?variable?without?global.?????????意思是说global语句可以声明?个或多个变量为全局变量。该声明仅在当前代码块中有效。除此之外,没办法访问全局变量。所以在函数中添加global声明:():?global?count?count?=?count+1?print(count)cc()2????????????global声明多个变量需要?逗号分num?=?0():?global?count,num?count?=?count+1?num?=?num+2?print(count,num)cc()3?2#?可以函数中的global声明能够修改全局变量numOut[24]:?2#?countOut[25]:?3在使?全局变量的场合,也可?类变量代替class?C:?count?=?3():?count?=?+1?print(count)cc()4??????????如果是想在函数中调?全局变量,这需要global声明。之后调?全局变量,全局变量的值也随之可能发?改变,如果是count?=count+1这种再定义的时候,否则全局变量只是被调?。也可以通过class来调?变量的?法达到全局变量的效果??????????global的作?就相当于传递参数,在函数外部声明的变量,如果在函数内想要使?,就?global来声明该变量,这样就相当于把该变量传递进来了,就可以引?该变量了??再看?个例?:>>>x?=?8>>>def?func():>>>????global?x>>>????x?=?2>>>>>>func()>>>print?x输出结果:2???????语句输出x的值,此时的全局变量x值被重新定义为1??????python中的global语句是被?来声明是全局的,所以在函数内把全局变量重新赋值时,这个新值也反映在引?了这个变量的其它函数中接上?的代码块?>>>def?fun2():>>>????return?x>>>fun2()>>>print?x输出结果:2????????这?看到fun2函数返回值是全局变量x,它的值还是2。因此新值也反映在引?了这个变量的其它函数中进?步详谈global修饰的?法:????????先是python中的?个奇异现象,在模块层?定义的变量,按理就是全局变量,在整个模块任意处都可以调?的,可以在函数中当做全局变量使?:a?=?6def?A():???print(a)A()print(a)???????上?代码都可以正常运?,且输出都为6???????但是如果在函数中有再赋值/定义(因为python是弱类型语?,赋值语句和定义语句?样),则会产?未定义变量的错误,如下a=4def?h():????print(a)????a=12h()print(a)???????运?会抛出U:nboundLocalError:?local?variable?'a'?referenced?before?assignment????????如果在函数中的定义在引?前使?,那么会正常运?,但函数中的变量和模块中的定义的全局变量不为同?个a=4def?h():????????a=12????print(a)h()print(a)????????输出为12和4,?h函数中使?的是局部变量a,最后的print使?的是全局变量a?????????那么我们会有疑问,如果我想在函数使?莫伊变量后再对其进?修改,怎么让函数中使?的变量是模块层定义的那个全局变量?不是函数内部的局部变量呢?这?就可以?到global修饰符了。a=4def?h():?????gloabl?a???????print(a)????a=12h()print(a)????????在?global修饰声明后的a就是全局变量,最后上?代码输出的是4和12