python globals().get,python – 为什么人们会使用globals()来定义变量
也许该函数使用一个与全局变量同名的局部变量,程序员不想打扰更改变量名?
def foo(bar):
global bar # SyntaxError
bar = bar + 1
def foo(bar):
globals()['bar'] = bar + 1
foo(1)
print(bar) # prints 2
另一个用例,虽然有点似是而非(显然不是你给出的示例函数中的情况),但是用于动态定义变量名.这很少,如果有的话,这是一个好主意,但至少在这个网站上的问题确实出现了很多.例如:
>>> def new_variable():
... name = input("Give your new variable a name! ")
... value = input("Give your new variable a value! ")
... globals()[name] = value
...
>>> new_variable()
Give your new variable a name! foo
Give your new variable a value! bar
>>> print(foo)
bar
否则,我只能想到这样做的一个原因:也许一些监督实体要求以这种方式设置所有全局变量,例如: “为了真正,非常清楚这些变量是全球性的”.或者也许同一个监管实体对全局关键字进行全面禁止,或者为每条线路支付程序员支付费用.
我并不是说这些中的任何一个都是一个很好的理由,但话说回来,如果不是为了确定目的,我真的不能想出以这种方式定义变量的充分理由(即便如此,它似乎也值得怀疑…… ).
为了以防万一,我做了一个计时检查,看看globals()调用是否比使用关键字更快.我希望函数调用字典访问速度要慢得多,而且确实如此.
>>> import timeit
>>> timeit.timeit('foo()', 'def foo():\n\tglobals()["bar"] = 1',number=10000000)
2.733132876863408
>>> timeit.timeit('foo()', 'def foo():\n\tglobal bar\n\tbar = 1',number=10000000)
1.6613818077011615
鉴于你发布的代码和我的时间结果,我可以想到你正在寻找的代码没有正当理由这样写.看起来像是误导的管理要求,或简单的无能.
python globals().get,python – 为什么人们会使用globals()来定义变量相关推荐
- Python两个内置函数——locals 和globals
python作用域 http://tgstdj.blog.163.com/blog/static/748200402012419114428813/ 有两种类型的作用域--类的变量和对象的变量. 类的 ...
- Python两个内置函数locals 和globals
这两个函数主要提供,基于字典的访问局部和全局变量的方式. 在理解这两个函数时,首先来理解一下python中的名字空间概念.Python使用叫做名字空间的东西来记录变量的轨迹.名字空间只是一个字典,它的 ...
- python 两个内置函数——locals 和globals(名字空间)批量以自定义变量名创建对象
文章目录 locals 和globals(名字空间)简介 1.局部变量函数locals例子(locals 返回一个名字/值对的字典) 批量创建对象 示例1 示例2 函数内 类内 2.全局变量函数glo ...
- Python globals 函数 - Python零基础入门教程
目录 一.Python globals 函数语法 二.Python globals 函数使用 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Pytho ...
- python中locals函数_python中locals和globals函数
首先,是关于名字空间的一个名词解释.是枯燥,但是很重要,所以要耐心些.Python使用叫做名字空间的东西来记录变量的轨迹.名字空间只是一个 字典,它的键字就是变量名,字典的值就是那些变量的值.实际上, ...
- 【Python基础】Python初学者必须吃透这69个内置函数!
所谓内置函数,就是Python提供的, 可以直接拿来直接用的函数,比如print,enumerate.format等.Python内置的这些函数非常精巧且强大的,对初学者来说,经常会忽略,但是偶尔会碰 ...
- 【Python入门】Python 63个内置函数超级详解
Python内置了一些非常精巧且强大的函数,对初学者来说,一般不怎么用到,但是偶尔会碰到,我也是用了一段时间python之后才发现,卧槽,还有这么好的函数,每个函数都非常经典,而且经过严格测试,使用内 ...
- Python 常用函数 - Python入门教程
Python 常用函数 2021 年 3 月 12 日 上午 11:18 [编辑] Python print 函数(一) Python print 函数(二) Python format 函数 Pyt ...
- python代码实例-python程序实例
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. github.comteamssixdouluo-download.gi ...
- 「Python入门」Python代码规范(风格)
活动地址:CSDN21天学习挑战赛 文章目录 前言 一.编码规范 二.分号 三.行的最大长度 四. 缩进规则 五.Python注释 5.1 行注释 5.2 块注释 5.3 文档注释 六. Py ...
最新文章
- 【抬杠】在某些时候不希望用户缩小浏览器的宽度,因为咳咳~会导致你的布局混乱,那么这个代码就是帮助你如何限制浏览器宽度的
- android项目编译时提示找不到*.apk(could not find the *.apk)
- 网络技术工程师专业核心 | 网络技术工程师就业方向
- java tls 实例_grpc加密TLS初体验(go、java版本)
- Validform实时表单验证插件实例使用
- python中列表字典元组之间的区别_python之字典、元组、列表的区别
- 实验7 BindService模拟通信
- (转)Android 如何建立你的菜单
- py2exe将python打包成exe
- C++线程中packaged_tack
- atitit.GUI图片非规则按钮跟动态图片切换的实现模式总结java .net c# c++ web html js
- python扫描器编程_python编写简单端口扫描器
- python语言常用语法汇总
- Head First设计模式(中文版)PDF
- 深度学习小笔记04-魏秀参《解析深度学习-卷积神经网络原理与视觉实践》
- 计算机进入桌面黑屏怎么办,电脑进入桌面后黑屏如何修复 电脑经常进入桌面之后黑屏的处理方法...
- 小猫钓鱼纸牌游戏java_java实现纸牌游戏-小猫钓鱼算法
- 七牛的管理接口不支持js端发送请求进行管理(设计到跨域问题)
- APISpace 二维码生成器API
- Check Point R81.10 - 下一代防火墙 (NGFW)
热门文章
- 皮一皮:直男只想说一句,表白?是表特别白吗?
- 面试:什么是序列化,怎么序列化,为什么序列化,反序列化会遇到什么问题,如何解决?...
- ScheduledThreadPool中的Leader-Follow模式你知道不?
- 每日一皮:如何用一句话让领导和同事都尴尬至极?
- 200余行代码,让你实时从视频中隐身
- 给迷茫的Java员一些中肯建议,你还在虚度光阴吗?
- Linux用cron发送信息,Python在linux上用cron作业发送KDE knotify消息?
- 5弹出阴影遮罩_千文详述Cocos Creator弹出式对话框实现技术,着实硬核
- 湘潭大学c语言答案,湘潭大学生c语言课后习题答案.doc
- centernet2 win10使用笔记