Python 大函数多变量(重构)

标签 python

我的脚本中有一个大型函数,其中包含程序的大部分逻辑。

有一次,它曾经跨越约 100 行,然后我尝试将其重构为多个较小的函数。然而,我有许多局部变量最终会在较小的函数中被修改,我需要一些方法来在较大的函数范围内跟踪它们。

例如,它看起来像

def large_func():
 x = 5
 ... 100 lines ...

def large_func():
   x = 6
   small_func_that_will_increment_x()
   small_func()
   ....

什么是处理这个问题的 pythonic 方法?

我能想到的两种方法是:

1) 全局变量 --- 可能会变得困惑,因为我有很多变量 2) 使用字典来跟踪它们,例如

tracker = {
'field1' : 5
'field2' : 4
}

而是对字典进行修改。

有没有我可能忽略的不同方法来做到这一点?

最佳答案

没有更多信息,很难知道这是否合适,但是……

一个对象就是一个命名空间。特别是,您可以将这些局部变量中的每一个都转换为对象的属性。例如:

class LargeThing(object):
    def __init__(self):
        self.x = 6
    def large_func(self):
        self.small_func_that_will_increment_x()
        self.small_func()
        # ...
    def small_func_that_will_increment_x(self):
        self.x += 1

无论 self.x = 6 属于 __init__ 还是在 large_func 的开头,或者这是否是一个好主意,取决于所有这些变量的实际含义,以及它们如何组合在一起。

关于Python 大函数多变量(重构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18137555/

相关文章:

python - 如何遍历一行中的列以找到满足某些条件的第一个

python - 为什么从数组转换为图像时会发生位移?

python - 查找包含给定文件的文件系统的大小和可用空间

python - Scipy LeastSq 误差线

python - numpy.genfromtxt 导入元组而不是数组

python - 如何在Python中暂停一个进程并向另一个进程发送信号

python - 下周五如何计算?

python - ChatGPT 词嵌入最相似的词

python - 将排序列表输出到新文件时出现问题

python - 检测并发中失败的任务。futures