也许该函数使用一个与全局变量同名的局部变量,程序员不想打扰更改变量名?

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()来定义变量相关推荐

  1. Python两个内置函数——locals 和globals

    python作用域 http://tgstdj.blog.163.com/blog/static/748200402012419114428813/ 有两种类型的作用域--类的变量和对象的变量. 类的 ...

  2. Python两个内置函数locals 和globals

    这两个函数主要提供,基于字典的访问局部和全局变量的方式. 在理解这两个函数时,首先来理解一下python中的名字空间概念.Python使用叫做名字空间的东西来记录变量的轨迹.名字空间只是一个字典,它的 ...

  3. python 两个内置函数——locals 和globals(名字空间)批量以自定义变量名创建对象

    文章目录 locals 和globals(名字空间)简介 1.局部变量函数locals例子(locals 返回一个名字/值对的字典) 批量创建对象 示例1 示例2 函数内 类内 2.全局变量函数glo ...

  4. Python globals 函数 - Python零基础入门教程

    目录 一.Python globals 函数语法 二.Python globals 函数使用 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Pytho ...

  5. python中locals函数_python中locals和globals函数

    首先,是关于名字空间的一个名词解释.是枯燥,但是很重要,所以要耐心些.Python使用叫做名字空间的东西来记录变量的轨迹.名字空间只是一个 字典,它的键字就是变量名,字典的值就是那些变量的值.实际上, ...

  6. 【Python基础】Python初学者必须吃透这69个内置函数!

    所谓内置函数,就是Python提供的, 可以直接拿来直接用的函数,比如print,enumerate.format等.Python内置的这些函数非常精巧且强大的,对初学者来说,经常会忽略,但是偶尔会碰 ...

  7. 【Python入门】Python 63个内置函数超级详解

    Python内置了一些非常精巧且强大的函数,对初学者来说,一般不怎么用到,但是偶尔会碰到,我也是用了一段时间python之后才发现,卧槽,还有这么好的函数,每个函数都非常经典,而且经过严格测试,使用内 ...

  8. Python 常用函数 - Python入门教程

    Python 常用函数 2021 年 3 月 12 日 上午 11:18 [编辑] Python print 函数(一) Python print 函数(二) Python format 函数 Pyt ...

  9. python代码实例-python程序实例

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. github.comteamssixdouluo-download.gi ...

  10. 「Python入门」Python代码规范(风格)

    ​ ​ 活动地址:CSDN21天学习挑战赛 文章目录 前言 一.编码规范 二.分号 三.行的最大长度 四. 缩进规则 五.Python注释 5.1 行注释 5.2 块注释 5.3 文档注释 六. Py ...

最新文章

  1. 【抬杠】在某些时候不希望用户缩小浏览器的宽度,因为咳咳~会导致你的布局混乱,那么这个代码就是帮助你如何限制浏览器宽度的
  2. android项目编译时提示找不到*.apk(could not find the *.apk)
  3. 网络技术工程师专业核心 | 网络技术工程师就业方向
  4. java tls 实例_grpc加密TLS初体验(go、java版本)
  5. Validform实时表单验证插件实例使用
  6. python中列表字典元组之间的区别_python之字典、元组、列表的区别
  7. 实验7 BindService模拟通信
  8. (转)Android 如何建立你的菜单
  9. py2exe将python打包成exe
  10. C++线程中packaged_tack
  11. atitit.GUI图片非规则按钮跟动态图片切换的实现模式总结java .net c# c++ web html js
  12. python扫描器编程_python编写简单端口扫描器
  13. python语言常用语法汇总
  14. Head First设计模式(中文版)PDF
  15. 深度学习小笔记04-魏秀参《解析深度学习-卷积神经网络原理与视觉实践》
  16. 计算机进入桌面黑屏怎么办,电脑进入桌面后黑屏如何修复 电脑经常进入桌面之后黑屏的处理方法...
  17. 小猫钓鱼纸牌游戏java_java实现纸牌游戏-小猫钓鱼算法
  18. 七牛的管理接口不支持js端发送请求进行管理(设计到跨域问题)
  19. APISpace 二维码生成器API
  20. Check Point R81.10 - 下一代防火墙 (NGFW)

热门文章

  1. 皮一皮:直男只想说一句,表白?是表特别白吗?
  2. 面试:什么是序列化,怎么序列化,为什么序列化,反序列化会遇到什么问题,如何解决?...
  3. ScheduledThreadPool中的Leader-Follow模式你知道不?
  4. 每日一皮:如何用一句话让领导和同事都尴尬至极?
  5. 200余行代码,让你实时从视频中隐身
  6. 给迷茫的Java员一些中肯建议,你还在虚度光阴吗?
  7. Linux用cron发送信息,Python在linux上用cron作业发送KDE knotify消息?
  8. 5弹出阴影遮罩_千文详述Cocos Creator弹出式对话框实现技术,着实硬核
  9. 湘潭大学c语言答案,湘潭大学生c语言课后习题答案.doc
  10. centernet2 win10使用笔记