将参数传递给python中的深层嵌套函数

时间:2020-07-17 15:40:04

标签: python linux

我想在bash脚本中运行python task.py --debug,现在我需要为嵌套函数设置“ debug”参数,如下所示:

main() : 
    call A_1():
        call A_2():
            ... 
                call A_10():
                    if debug : 
                       print("error")

其中A_10是第十个嵌套函数,如图所示,我只需要debug参数在A_10中生效。现在,强行方式是从debugA_1添加参数A_10。还有其他更优雅的方式来实现我所需要的吗?

2 个答案:

答案 0 :(得分:2)

只需将调试定义为main中的变量。这就足够了,并且将在嵌套函数的范围之内。

def main():
    debug = True
    def A_1():
        def A_2():
            def A_10():
                if debug:
                    print("error")
            A_10()
        A_2()
    A_1()

if __name__ == "__main__":
    main()

或者也是

def main():
    def A_1():
        def A_2():
            def A_10():
                if debug:
                    print("error")
            A_10()
        A_2()
    A_1()

if __name__ == "__main__":
    debug = True
    main()

在后者中,debug是全局变量。

答案 1 :(得分:2)

在读取sys.argv的脚本的任何部分都可以使用参数,无论它是否嵌套都无所谓。

示例:

hello.py

import sys

def test():
    print(sys.argv)
    if "--debug" in sys.argv:
        print("We're in debug mode.")

def main():
    test()

if __name__ == "__main__":
    main()

如果我运行python3 hello.py --debug,它将返回:

['hello.py', '--debug']
We're in debug mode.