当前位置: 首页 > 知识库问答 >
问题:

为什么全局变量被认为是“禁忌”语法?[副本]

尉迟京
2023-03-14

这是我写的一个脚本的摘录:

succ_count = 0

def run_copy():
    shutil.copy(file, 'W://20' + year + '/' + foldername + '/')
    global succ_count
    succ_count += 1

我的一个同事说,这里使用全局变量是不好的。

我可以看出这有多么不方便,因为我必须先使用全局成功计数,然后才能将其递增1。

但是为什么使用全局被认为是糟糕的编程呢?

如果这是一个非常明显的问题,我很抱歉,我对Python相对陌生,并试图尽可能多地理解事物。

共有1个答案

樊运乾
2023-03-14

全局变量在几乎每种编程语言中都被认为是坏的。你可以检查这个:为什么全局变量应该在不必要的时候被避免

另外,使用全局变量最大的问题是每个函数都可以访问这些变量,有时很难弄清楚哪些函数实际上读写这些变量。

 类似资料:
  • 问题内容: 我是一位Java程序员,对公司领域来说是新手。最近,我已经使用Groovy和Java 开发了一个应用程序。我编写的所有代码都使用了大量的静态变量。高级技术人员要求我减少使用的静电数量。我已经在谷歌上搜索了相同的内容,并且发现许多程序员都反对使用静态变量。 我发现静态变量更易于使用。而且我认为它们也是有效的(如果我错了,请纠正我),因为如果我必须对一个类中的一个函数进行10,000次调用

  • 我在《学习火花:闪电般的大数据分析》一书中看到了这个例子: 我的问题是——评论说:安全:将我们需要的字段提取到局部变量中 为什么提取到局部变量比使用字段(定义为)本身更安全?

  • 问题内容: 为什么全局变量是不好的?[closed] 问题答案: 这与Python无关。全局变量在任何编程语言中都是不好的。 但是,全局常量在概念上与全局变量并不相同。全局常数完全无害。只是在Python中没有强制性差异,只有约定是。 它们不好的原因是它们使函数具有隐藏的(非显而易见的,令人惊讶的,难以检测的)副作用,从而导致复杂性的增加,并有可能导致产生Spaghetti代码。 但是,即使在函数

  • 问题内容: function foo () { global $var; // rest of code } 在我的小型PHP项目中,我通常采用过程方式。通常,我有一个包含系统配置的变量,当我需要在函数中访问此变量时,我会这样做。 这是不好的做法吗? 问题答案: 当人们谈论其他语言的全局变量时,这意味着与PHP中的操作有所不同。那是因为变量在PHP 中并不是 真正的 全局变量。典型的PHP程序的范

  • 问题内容: 我一直看到警告,不要在JavaScript中使用全局变量,但是似乎人们说这的唯一原因是因为阻塞了全局名称空间。我可以想象通过将所有变量放入一个大对象中来轻松解决此问题。现在的问题是:除了方便起见,还有其他原因不使用全局变量吗?它们是否涉及任何性能或兼容性问题? 问题答案: 它们使全局名称空间混乱,并且查找速度比局部变量慢。 首先,拥有许多全局变量始终是一件坏事,因为很容易忘记您在某个地

  • 问题内容: 我目前遇到一个问题,我有两个我需要调用的模块,它们需要能够修改相同的变量。 我决定创建一个名为的全局变量,并在其中存储所需的变量。 但是我一直在阅读,使用全局变量是一种不好的做法。为什么? 我仅创建一个变量,该变量不应与其他任何冲突,因为它是我的应用程序的名称。 问题答案: 几乎在所有编程语言中,全局变量都被视为反模式,因为它们使遵循和调试代码变得非常困难。 浏览代码时,您永远不知道哪