声明内部函数的最python方法

2024-10-05 10:16:39 发布

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

我正在写一个程序,其中我使用两个主要函数,但这两个函数使用相同的内部函数。我在想我该如何用最具代表性的方式来写呢?我的意思是把这些helper隐藏在里面的某个地方,并且不要重复helper函数。在

def main_function1():
    helper1()
    helper2()
    #dowork1

def main_function2()
    helper1()
    helper2()
    #dowork2

def helper1()
    #workhelp1

def helper2()
    #workhelp2

唯一合理的解决方案是用..声明静态类。。私人功能?但因为:

^{pr2}$

我陷入困境,没有主意了。在

发件人:http://www.faqs.org/docs/diveintopython/fileinfo_private.html

主题:Why are Python's 'private' methods not actually private?

我还考虑用内部helpers和switcher声明一个主函数来确定哪个函数应该运行,但我想这是一个很糟糕的解决方案。在

目前,我发现最准确的方法是将normal类声明为:

^{3}$

输出:

#first function#
first helper
second helper
#second function#
first helper
second helper
###
first helper

但在这里,我可以访问助手,这不是什么大不了的,但仍然给我一个理由怀疑。在


Tags: 函数程序helper声明maindef方式function
2条回答

试试这个

def get_main(name):
    def helper1():
        print("helper1")
    def helper2():
        print("helper2")
    def main1():
        print("Running helpers from main1")
        helper1()
        helper2()
    def main2():
        print("Running helpers from main2")
        helper1()
        helper2()
    if name == "main1":
        return main1
    if name == "main2":
        return main2


main1 = get_main("main1")
main2 = get_main("main2")

然后可以按如下方式运行函数:

^{pr2}$

输出:

Running helpers from main1
helper1
helper2
Running helpers from main2
helper1
helper2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'helper1' is not defined

Python中没有私有函数。相反,通过在非公共方法的名称前面加下划线,可以向类的用户发出信号,这些方法不应该在外部调用:

class Functions:
    def main_function1(self):
        print("#first function#")
        self._helper1()
        self._helper2()

    def main_function2(self):
        print("#second function#")
        self._helper1()
        self._helper2()

    def _helper1(self):    
        print("first helper")

    def _helper2(self):
        print("second helper")

这符合“我们在这里都是同意的成年人”的原则——你可以碰一门课的非公开方法,但如果你用错了,那就是你自己的头了。在

相关问题 更多 >

    热门问题