调用在th之后定义的嵌套函数时发生UnboundLocalError

2024-10-05 10:36:48 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个很长的函数,我经常想把它分解成更小的函数来提高可读性。你知道吗

class A:
    def long_function(self):
        self.helper1()
        self.helper2()
        ...
        return

    def helper1(self):
        #hardwork
    ...

然后我发现python函数可以在其他函数中声明,这有助于组织代码,因为它限制了helper函数的作用域,如果不需要也可以去掉self。所以:

class A:
    def long_function(self):
        helper1()
        helper2()
        ...
        return

        def helper1():
            #hardwork
        def helper2():
            #more hardwork

但是,python给我发送了一个UnboundLocalError,告诉我在赋值之前引用了'helper1'。我知道我可以在它们的调用之上定义它们,但这会破坏所有易于阅读的目的。我也可以继续用私有方法填充我的类,但我认为这是次优的。你知道吗

你有什么建议吗?你知道吗


Tags: 函数代码selfhelper声明returndeffunction
1条回答
网友
1楼 · 发布于 2024-10-05 10:36:48

函数自上而下执行。def和其他语句一样是一个可执行语句,当执行到达它时执行。如果在函数末尾写入def helper1,则直到函数末尾才会定义helper1。如果直到最后才定义它,就不能在开始时使用它。你知道吗

如果你想把你的方法分解成更小的方法,按照你在第一个例子中的方法来做。这没有什么不好的。您可以使用一个前导下划线(.e,_helper1)命名这些helper方法,以提醒用户它们不是公共API的一部分。你知道吗

相关问题 更多 >

    热门问题