【问题标题】:global variable vs getter functions vs function variable全局变量 vs getter 函数 vs 函数变量
【发布时间】:2021-03-01 06:43:49
【问题描述】:

我有一个可以通过多种方式实现的场景。我需要更优化/python 实现方式的建议,为什么?

让我们将嵌套函数调用视为 funca1 -> funca2 -> funca3 ->funca4 funcb1 -> funcb2 -> funcb3 ->funcb4

if __name__ == "__main__":
    funca1()
    funcb1()

和 varx 变量仅由 funca4 和 funcb3 使用/或需要。 那么我们有以下选项

  1. 创建 varx 作为全局变量并使用它 funca4 和 funcb3 而不通过所有函数
  2. 在所有函数中传递 varx 变量,即使它仅在两个函数中使用也是如此
  3. 创建另一个函数 get_varx() 函数,并且只在 funca4、funcb4 中使用它。

这也可以通过创建类并将 varx 指定为 property 来实现。但是目前的项目设计不允许这样做

【问题讨论】:

    标签: python python-3.x functional-programming global-variables


    【解决方案1】:

    我用你给的场景运行了一段demo代码,并使用time模块对执行时间进行计时,得到如下结果:

    最快执行排名:

    1. 创建另一个函数来获取值。
    2. varx 创建为全局变量。
    3. 在所有函数中传递varx 变量。

    【讨论】:

    • 你可以阅读它here。我使用perf_counter()方法获取结果。
    • 你可以阅读它here。我使用perf_counter()方法获取结果。
    【解决方案2】:

    优化是相对的。

    您可以通过以下方式进行优化:-

    1. 你的代码有更少的行/字符

    2. 你想要最小的内存消耗

    3. 你想要最少的时间。

    最短时间将是另一种函数方法

    最小内存和最小行数将是全局变量。

    通过 all 传递一个变量是不必要的,并且在每个局部范围内复制变量会消耗大量内存,因此应该避免这种情况。

    【讨论】:

      猜你喜欢
      • 2021-12-27
      • 2011-06-21
      • 2017-07-11
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 2020-10-18
      相关资源
      最近更新 更多