【发布时间】:2019-03-27 13:59:14
【问题描述】:
首先,如果问题已经在某处得到解答,我深表歉意,我还没有找到问题的答案,但我对使用 stackoverflow 还很陌生。
我正在尝试优化一些代码,我想以“正确”的方式来做。我有一个函数 A,它进行预处理并定义了一些变量,这些变量将被另一个函数 B 使用。现在,我不能直接在 B 中定义这些变量,因为我想避免重复处理步骤。我可以将变量作为参数传递给函数 B,但为了简化这一点,我想避免这种情况。
一种选择当然是使用全局变量,但我在多个地方读到这是一个坏习惯,原因之一是它破坏了封装。
我可以看到的另一种选择是定义一个类(某种主类),我在其中放置所有要使用的函数并传递“self”以访问变量。有人对此有异议吗?出于某种原因,这也是一种不好的方法吗?
提前感谢任何有回应的人!
【问题讨论】:
-
如果不了解更多细节,这很难说。结果是否仅由函数 B 使用?然后我认为归还它们并将它们作为参数提交是正确的方法。它们是否代表某种与 A 和 B 相关的状态?也许上课是正确的方式。全局变量(几乎)总是不可行,除非在非常特殊的情况下。
-
这很容易概括:“我应该使用全局变量”的答案通常是“不”。
-
@L3viathan 感谢您抽出宝贵时间回复。确实,我也许应该提供更多背景信息。假设我有一个模拟天体物理对象的文件。此代码已经包含类和函数。查看代码结构时,我觉得我可以将所有内容放在一个新类中(从而将整个模拟视为一个对象),其中包含已为模拟的不同元素定义的类和函数。我的问题是:这个接缝对你来说是异端吗,还是说这不是那么荒谬?
标签: python python-3.x