如何避免多级嵌套函数

时间:2015-07-21 12:41:39

标签: python

我正在使用具有4级嵌套函数的python代码。您可以在下面看到一个示例:

class TestClass:
    def __init__(self):
        pass
    def calculate(self, x, y):
        results = []

        result = None
        context = API.send_request('get_context')
        if context['result'] == 'ok':
            result = context['data']
        # Some more actions here

        def _is_valid_variable(variable):
            if (variable > 0 and
                variable % 2 == 0 and
                variable < 10):
                return True

            return False

        def _format_data(data):
            formatted_data = None

            def _extract_time(line):
                time = None

                if line:
                    time = line.split('|')[-1]

                return time

            if data:
                for line in data.split('\n'):
                    formatted_data += '[DEBUG] [{0}] {1}'.format(_extract_time(line), line.split('|')[1])

            return formatted_data


        return results

在这个例子中,只有3个级别,但想法是相同的。

构建此类代码的更好方法是什么?

将所有闭包/内部函数放在父函数的开头是不是更好地混合代码?

P.S。我不想将这些函数放到类的级别,只要它们实际上与类不相关,而只是它们的父函数。

1 个答案:

答案 0 :(得分:1)

这些是普通函数,既不依赖于您的类或实例,也不依赖于调用函数的上下文,因此只需将它们放在模块的顶层。