Python 内置函数globals()和locals()对比详解
这篇文章主要介绍了Pythonglobals()和locals()对比详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Python的两个内置函数,globals()和locals(),它们提供了基于字典的访问局部和全局变量的方式。
globals()是可写的,即,可修改该字典中的键值,可新增和删除键值对。
而locals()是不可修改字典中已存在的键值的,也不能pop移除键值对,但是可以新增键值对。
Demo:
a=1#定义一个全局变量a defdemo(): x=100#定义一个局部变量x globalb b=2#定义一个全局变量b,因为在函数内,只有调用了该函数才有变量b print(globals()) print(locals()) globals()['a']='modifieda'#修改函数外的全局变量a,成功 globals()['b']='modifiedb'#修改函数中定义的全局变量b,成功 globals()['c']='newc'#新增一个全局变量c,成功 locals()['x']='modifiedx'#修改函数内的局部变量x,结果失败了 locals()['y']='newy'#新增一个函数内的局部变量y,成功 globals().pop('c')#尝试移除全局变量c,成功 locals().pop('x')#尝试移除局部变量x,失败了 print(globals()) print(locals()) defprint_b(): try: print(b) exceptNameErrorase: print(e) defprint_x(): try: print(x) exceptNameErrorase: print(e) print_b()#b虽然是全局变量,但是是在函数demo内定义的,在该函数调用前b是没有的,所以notdefined demo()#调用demo函数,此时有了全局变量b print_x()#x局部变量,在外访问不到 print_b()#此时打印全局变量b正常,并且是修改后的值 #打印结果字典中省略了内置的变量和定义的方法,方便比较 name'b'isnotdefined {'a':1,'b':2}#globals() {'x':100}#locals() {'a':'modifieda','b':'modifiedb'}#globals() {'y':'newy','x':100}#locals() name'x'isnotdefined modifiedb
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。