【发布时间】:2019-06-22 19:48:04
【问题描述】:
我一直在尝试清理我正在开发的神经网络进化模拟器的代码,因为它已经增长到 1000 多行并且非常难以阅读。该过程的一部分涉及将代码块从主循环移动到它们自己的函数(事件处理、绘制到屏幕等)或它们自己的模块中。但是,我无法弄清楚如何处理全局变量。
例如,我有一个名为“selected”的变量,它跟踪用户选择的特定神经网络生物。当用户点击一个新生物时,我想在事件处理函数中改变这个变量的值;我还想在生物死亡时改变它的值,这发生在它自己函数的不同代码块中。
我知道我可以使用“全局”关键字来执行此操作,但我的印象是这样做通常是不好的做法。我也知道我可以将这些变量存储在一个单独的模块中并导入它们,但是当我处理 30 多个变量时,每次我想修改它们时都输入“module_name.variable_name”似乎不必要地乏味。我也在考虑将所有这些值存储在一个全局字典中,以便我可以在函数中修改它们,但同样,每次都输入“dict_name['var_name']”似乎没有必要。
所以基本上我的问题是,在这种情况下,最佳做法是什么?它是这些解决方案之一,还是有更清洁的方法?在花费数小时彻底检查代码之前,我想确保自己走在正确的轨道上。感谢您的帮助!
【问题讨论】:
-
全局变量是一种不好的做法,而不是使用 global 关键字。如果您使用全局变量,请使用
global在函数内修改它们。 -
全局变量被frounded的原因和这么小的程序没什么关系,不要心疼
-
所有全局变量都与用户交互有关吗?
-
如果你的值真的是全局的(也就是单例),那么请随意使用 global.调试起来稍微困难一些,但应该没问题。
标签: python scope structure readability