我想在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
中生效。现在,强行方式是从debug
到A_1
添加参数A_10
。还有其他更优雅的方式来实现我所需要的吗?
答案 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.