全局变量 vs getter 函数 vs 函数变量
global variable vs getter functions vs function variable
我有一个可以通过多种方式实现的场景。我需要更优化的建议/python 实施方式以及为什么?
让我们将嵌套函数调用视为
funca1 -> funca2 -> funca3 ->funca4
funcb1 -> funcb2 -> funcb3 ->funcb4
if __name__ == "__main__":
funca1()
funcb1()
并且 varx 变量仅由 funca4 和 funcb3 使用/或需要。
那么我们有以下选项
- 创建 varx 作为全局变量并使用它 funca4 和 funcb3 而不通过所有函数
- 将 varx 变量传递给所有函数,即使它仅在两个函数中使用
- 创建另一个函数 get_varx() 函数并且只在 funca4、funcb4 中使用它。
这也可以通过创建 class 并将 varx 分配为 属性 来实现。但是项目的当前设计不允许这样做
我运行一个你给的场景的demo代码,使用time
模块对执行时间进行计时,得到如下结果:
最快执行排名:
- 正在创建另一个函数来获取值。
- 正在创建
varx
作为全局变量。
- 在所有函数中传递
varx
变量。
优化是相对的。
您可以通过以下方式进行优化:-
你的代码要少lines/characters
您想要最小内存消耗
您想要所需的最短时间。
最小时间将是另一种函数方法
最小内存和最小行数将是全局变量。
通过所有变量传递变量是不必要的,并且会在每个本地范围内复制变量,消耗大量内存,因此应该避免这种情况。
我有一个可以通过多种方式实现的场景。我需要更优化的建议/python 实施方式以及为什么?
让我们将嵌套函数调用视为 funca1 -> funca2 -> funca3 ->funca4 funcb1 -> funcb2 -> funcb3 ->funcb4
if __name__ == "__main__":
funca1()
funcb1()
并且 varx 变量仅由 funca4 和 funcb3 使用/或需要。 那么我们有以下选项
- 创建 varx 作为全局变量并使用它 funca4 和 funcb3 而不通过所有函数
- 将 varx 变量传递给所有函数,即使它仅在两个函数中使用
- 创建另一个函数 get_varx() 函数并且只在 funca4、funcb4 中使用它。
这也可以通过创建 class 并将 varx 分配为 属性 来实现。但是项目的当前设计不允许这样做
我运行一个你给的场景的demo代码,使用time
模块对执行时间进行计时,得到如下结果:
最快执行排名:
- 正在创建另一个函数来获取值。
- 正在创建
varx
作为全局变量。 - 在所有函数中传递
varx
变量。
优化是相对的。
您可以通过以下方式进行优化:-
你的代码要少lines/characters
您想要最小内存消耗
您想要所需的最短时间。
最小时间将是另一种函数方法
最小内存和最小行数将是全局变量。
通过所有变量传递变量是不必要的,并且会在每个本地范围内复制变量,消耗大量内存,因此应该避免这种情况。