使用全局变量传递选项?

2024-09-24 22:17:40 发布

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

这是我的问题。你知道吗

我有一个main()接受命令行选项,比如foo,它是一个布尔值。然后main()调用一组函数,main()调用fcn1(),fcn1()调用fcn2(),fcn2()调用fcn3(),fcn3()调用fcn4(),fcn4()调用fcn5(),然后在函数fcn5()中,我们到达使用选项foo的位置。你知道吗

我可以看到两个选项将此选项传递给fcn5()。你知道吗

首先,对于调用链中的每个函数,都有一个名为foo的函数参数,并通过这些参数传递foo。这看起来有点乱。所有函数都需要有一个函数参数,但对于fcn1-fcn4,它们并没有真正使用。你知道吗

另一个选择是使用一个全局变量,在main()中,我设置全局变量g\u foo,然后在fcn5()中,它读取g\u foo的值。但我不确定在这种情况下使用全局变量是否是个好主意。你知道吗

我们有更好的解决办法吗?你知道吗

谢谢!你知道吗


Tags: 函数foomain选项情况函数参数主意全局变量
1条回答
网友
1楼 · 发布于 2024-09-24 22:17:40

将函数放在类中可能是有意义的。这里是一个简单的例子,这里的函数不做任何有趣的事情,但可以用您的代码替换。你知道吗

import sys

class MyClass:

    def __init__(self, arg):
        self.arg = arg

    def fn1(self):
        return self.fn2() # just as a simple example which calls other functions

    def fn2(self):
        return self.fn3()

    def fn3(self):
        return self.fn4()

    def fn4(self):
        return self.fn5()

    def fn5(self):
        return self.arg


def main():
    m = MyClass(arg=sys.argv[1])
    print m.fn1() # prints output based on command line argument


if __name__ == '__main__':
    main()

这样做的好处是将全局代码保存在名称空间中,还可以使整个代码更整洁。你知道吗

相关问题 更多 >