为了账号安全,请及时绑定邮箱和手机立即绑定

为什么全局变量是邪恶的?

为什么全局变量是邪恶的?

Qyouu 2019-05-27 14:29:13
为什么全局变量是邪恶的?我试图找到一个很好的来源,解释为什么global在python(以及一般的编程)中使用被认为是不好的做法。有人可以指点我或解释一下吗?
查看完整描述

4 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

是的,从理论上讲,全局(和一般的“状态”)是邪恶的。实际上,如果你查看python的packages目录,你会发现大多数模块都以一堆全局声明开头。显然,人们对他们没有任何问题。

特别是对于python,全局变量的可见性仅限于一个模块,因此没有影响整个程序的“真正”全局变量 - 这使得它们的危害性降低。另一点:没有const,所以当你需要一个常数时,你必须使用全局。

在我的实践中,如果我碰巧修改了函数中的全局函数,我总是声明它global,即使技术上不需要它,如:

cache = {}def foo(args):
    global cache

    cache[args] = ...

这使得全局变量的操作更容易被追踪。


查看完整回答
反对 回复 2019-05-27
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

它们是必不可少的,屏幕就是一个很好的例子。但是,在多线程环境中或涉及许多开发人员的情况下,实际上常常会出现这样的问题:谁(确实)设置或清除了它?根据体系结构的不同,分析成本高昂且经常需要进行分析。虽然读取全局变量可以正常,但必须控制对它的写入,例如通过单个线程或线程安全类。因此,全球变量引发了对自身被认为是邪恶的后果可能导致高昂的开发成本的恐惧。因此,一般来说,将全球变量的数量保持在较低水平是一种很好的做法。

查看完整回答
反对 回复 2019-05-27
  • 4 回答
  • 0 关注
  • 880 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信