我一直在努力整理我的神经网络进化模拟器的代码,因为它已经长到了1000多行,而且很难阅读。这个过程的一部分涉及将代码块从主循环移动到它们自己的函数(事件处理、绘图到屏幕等)或它们自己的模块中。然而,我很难弄清楚如何处理全局变量。你知道吗
例如,我有一个名为“selected”的变量,它跟踪用户选择的特定神经网络生物。当用户单击一个新的生物时,我想在事件处理函数中更改这个变量的值;当该生物死亡时,我也想更改它的值,这发生在它自己函数的不同代码块中。你知道吗
我知道我可以用“global”关键字来做这件事,但我的印象是这样做通常是不好的做法。我也知道我可以将这些变量存储在一个单独的模块中并导入它们,但是当我处理30多个变量时,输入“module”_name.variable\u名称“每次我想修改它们似乎都是不必要的乏味。我还考虑将所有这些值存储在一个全局字典中,以便可以从函数中修改它们,但同样地,每次键入“dict\u name['var\u name']”似乎是不必要的。你知道吗
所以本质上我的问题是,在这种情况下,最好的做法是什么?是这些解决方案之一,还是有一个更干净的方法?在我花几个小时修改代码之前,我想确保我的思路是正确的。谢谢你的帮助!你知道吗
30个全局变量只是一个很大的禁忌。在某个时候,你会忘记
global
语句,你会创建一个局部变量,并花费数小时来调试你的代码。你知道吗您可以构建一个单例对象
而不是:
您可以创建一个包含所有变量作为成员的大包装类:
现在可以使用
self
前缀访问所有变量。它可能很枯燥,但至少很短,而且大多数优秀的ide(pycharm、pyscripter、eclipse)都建议使用completion(比dictionary好得多,在dictionary中不能使用completion)现在:
因此,使用对象不是为了继承、多态等,而是为了定义“全局”上下文并在实例内部工作,使用
self.
前缀,并告别global
变量。你知道吗相关问题 更多 >
编程相关推荐