为什么全局variables是邪恶的?

我试图find一个很好的来源,解释了为什么使用global被认为是不好的做法在Python(和一般编程)。 有人可以指我一个或在这里解释?

这与Python无关; 全局variables在任何编程语言中都是不好的。

然而,全局常量在概念上与全局variables不相同, 全局常量是完全正确的使用。 只是在Python中没有语法上的差异。

他们不好的原因是他们允许function隐藏(如“非明显”和“未声明”),因此很难理解副作用。 此外,这可能会导致意大利面代码 。

此外,全局的有限/受控/有意识的使用是可以接受的,正如本地状态(即可变variables)在函数编程中可接受的,无论是出于性能原因还是简单性,还是用于caching/记忆。

但是,当然,这个短的问题真的有很多很长的答案,所以你最好的select是谷歌“为什么是全局variables不好”。 一些例子:

如果你想深入了解副作用(通常,或者至less经常)不好(还有许多其他的启发性的东西),你应该学习函数式编程:

是的, 从理论上讲 ,全局(和一般的“国家”)是邪恶的。 实际上,如果你看看你的python的packages目录,你会发现大多数模块都是以一系列全局声明开始的。 很明显,他们没有问题。

具体到python,全局variables的可见性仅限于一个模块,因此没有影响整个程序的“真实”全局variables – 这使得它们不那么有害。 还有一点:没有const ,所以当你需要一个常量时,你必须使用全局的。

在我的实践中,如果我碰巧在一个函数中修改一个全局函数,我总是用global来声明它,即使在技术上没有必要这样做,如:

 cache = {} def foo(args): global cache cache[args] = ... 

这使得全局variables的操作更容易追踪。

    Interesting Posts