我有一个通过命令行参数设置的标志。该标志由嵌套了许多层的函数使用。将标志(或任何其他变量)传递给深度嵌套函数的pythonic方法是什么?像我在下面所做的那样,将其添加到每个参数列表中感觉不对。
def func3(flag var3, var4):
...
# flag is used only here
if flag;
do something
else:
do something else
def func2(flag, var1, var2):
...
x=func3(flag, c, d)
def func1(flag, var1, var2)
...
y = func2(flag, a, b)
def def main():
...
parser.add_agrument('-f', '--flag', action='store_true' default=false)
...
result = func1(flag, foo, bar)
如果您不想像其他人已经建议的那样使用Class,并且需要一个简单的变通办法而不会使您更改代码,请在所有CAPS中的该模块中使用全局变量
另外,在我看来,这就像我们如何使用环境变量。单个变量,可以自我解释,很少被任何人错误地更改。
def func3(var3, var4):
...
# flag is used only here
if SOME_DISTINCT_FLAG;
do something
else:
do something else
def func2(var1, var2):
...
x=func3(c, d)
def func1(var1, var2):
...
y = func2(a, b)
def def main():
...
parser.add_argument('-f', '--flag', action='store_true' default=false)
...
# this lets you access global variables
# without it, the variable will be of local scope
global SOME_DISTINCT_FLAG
SOME_DISTINCT_FLAG = flag
result = func1(foo, bar)
另外,您可能在顶部定义它只是为了清楚它是什么,并设置默认值。没有松动的末端。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句