加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python大函数许多变量(重构)

发布时间:2020-12-20 12:23:07 所属栏目:Python 来源:网络整理
导读:我的脚本中有一个很大的函数,它包含我程序的大部分逻辑. 有一次,它曾经跨过约100行,然后我试图将其重构为多个较小的函数.但是,我有许多局部变量最终在较小的函数中被修改,我需要一些方法来跟踪它们在较大函数的范围内. 例如,它看起来像 def large_func(): x
我的脚本中有一个很大的函数,它包含我程序的大部分逻辑.

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

例如,它看起来像

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

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

什么是pythonic方式来处理这个?

我能想到的两种方法是:

1)全局变量—由于我有很多变量,可能会变得混乱
2)使用dict来跟踪它们

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

而是在dict上进行修改.

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

解决方法

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

对象是命名空间.特别是,您可以将每个局部变量转换为对象的属性.例如:

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的开头,或者这是否是一个好主意,取决于所有这些变量实际意味着什么,以及它们如何组合在一起.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读