如果函数需要修改全局范围内声明的变量,则需要使用全局声明。但是,如果函数只需要读取一个全局变量,它可以不使用全局声明来完成:X=10deffoo():globalXX=20#Needsglobaldeclarationdefbar():print(X)#Doesnotneedglobal我的问题是关于Python的设计:为什么Python设计为允许在不使用全局声明的情况下读取全局变量?也就是说,为什么只强制赋值具有全局,为什么不强制全局读取呢?(这会使它变得均匀而优雅。)注意:我可以看到在阅读时没有歧义,但在分配时不清楚是否打算创建一个新的局部变量或分配给全局变量。但是,我希望BDFL
如果函数需要修改全局范围内声明的变量,则需要使用全局声明。但是,如果函数只需要读取一个全局变量,它可以不使用全局声明来完成:X=10deffoo():globalXX=20#Needsglobaldeclarationdefbar():print(X)#Doesnotneedglobal我的问题是关于Python的设计:为什么Python设计为允许在不使用全局声明的情况下读取全局变量?也就是说,为什么只强制赋值具有全局,为什么不强制全局读取呢?(这会使它变得均匀而优雅。)注意:我可以看到在阅读时没有歧义,但在分配时不清楚是否打算创建一个新的局部变量或分配给全局变量。但是,我希望BDFL
这个问题在这里已经有了答案:HowdoIgetaresult(output)fromafunction?HowcanIusetheresultlater?(4个回答)关闭25天前。我正在尝试在Python中访问函数外部的局部函数变量。我可以使这样的代码与全局变量一起工作:bye=''defhi():globalbyebye=5sigh=10hi()print(bye)接下来,我尝试了这段代码,希望在不使用globalbye的情况下,在hi()之外访问bye:defhi():bye=5sigh=10returnhi()x=hi()print(x.bye)这给出了AttributeErro
这个问题在这里已经有了答案:HowdoIgetaresult(output)fromafunction?HowcanIusetheresultlater?(4个回答)关闭25天前。我正在尝试在Python中访问函数外部的局部函数变量。我可以使这样的代码与全局变量一起工作:bye=''defhi():globalbyebye=5sigh=10hi()print(bye)接下来,我尝试了这段代码,希望在不使用globalbye的情况下,在hi()之外访问bye:defhi():bye=5sigh=10returnhi()x=hi()print(x.bye)这给出了AttributeErro
我知道在Python中可以跨模块共享全局变量。但是,我想知道这在多大程度上是可能的以及为什么。例如,global_mod.pyx=Nonemid_access_mod.pyfromglobal_modimport*classdelta:def__init__(self):printxbot_modif_mod.pyimportmid_access_modimportglobal_modclassmew:def__init__(self):global_mod.x=5defmain():m=mew()d=mid_access_mod.delta()即使所有模块都共享全局变量x,这也会打印
我知道在Python中可以跨模块共享全局变量。但是,我想知道这在多大程度上是可能的以及为什么。例如,global_mod.pyx=Nonemid_access_mod.pyfromglobal_modimport*classdelta:def__init__(self):printxbot_modif_mod.pyimportmid_access_modimportglobal_modclassmew:def__init__(self):global_mod.x=5defmain():m=mew()d=mid_access_mod.delta()即使所有模块都共享全局变量x,这也会打印
这个问题在这里已经有了答案:WhydoIgeta"referencedbeforeassignment"errorwhenassigningtoaglobalvariableinafunction?(4个回答)Assigningtovariablefromparentfunction:"Localvariablereferencedbeforeassignment"[duplicate](5个回答)关闭8个月前。我只是想看看变量作用域是如何工作的,结果遇到了以下情况(都是从终端运行的):x=1definc():x+=5inc()Traceback(mostrecentcalllast)
这个问题在这里已经有了答案:WhydoIgeta"referencedbeforeassignment"errorwhenassigningtoaglobalvariableinafunction?(4个回答)Assigningtovariablefromparentfunction:"Localvariablereferencedbeforeassignment"[duplicate](5个回答)关闭8个月前。我只是想看看变量作用域是如何工作的,结果遇到了以下情况(都是从终端运行的):x=1definc():x+=5inc()Traceback(mostrecentcalllast)
这个问题在这里已经有了答案:name'times'isusedpriortoglobaldeclaration-ButITISdeclared!(6个回答)关闭8年前。我有一个python2.6脚本(是的,我知道我应该至少升级到2.7),如下所示:ret_code=0defsome_func()globalret_code...if__name__=='__main__':globalret_code...现在,如果我运行代码,我会收到警告:*SyntaxWarning:name'ret_code'isassignedtobeforeglobaldeclarationglobalret
这个问题在这里已经有了答案:name'times'isusedpriortoglobaldeclaration-ButITISdeclared!(6个回答)关闭8年前。我有一个python2.6脚本(是的,我知道我应该至少升级到2.7),如下所示:ret_code=0defsome_func()globalret_code...if__name__=='__main__':globalret_code...现在,如果我运行代码,我会收到警告:*SyntaxWarning:name'ret_code'isassignedtobeforeglobaldeclarationglobalret