0

我正在尝试使用 bash 脚本一次运行多个 python 脚本,我通过传入 args 来修改 bash 脚本(称为 MasterLoader)中的数量或 min/max 等 python 变量,如下所示:

A_Num=20

python A1.py "global AMOUNT; AMOUNT = $A_Num" &&
python A2.py &&
#More follows

$SHELL

在 A1 我有一个功能:

def take_args():
    for i in range(len(sys.argv)-1):
        exec(sys.argv[i+1])

现在,这工作正常。我的问题来自于我实现了一个为每个文件托管所有功能的模块(每个模块有大约 250 行或更多的冗余代码),如下所示:

def take_args():
    for i in range(len(sys.argv)-1):
        exec(sys.argv[i+1])

def common_function1():
    #Code here
#More functions follow

我称这个模块为函数,现在在 A1 中(真的是其中任何一个)我只是这样做:

from functions import *

def main()
    #<Variables here>

    take_args()

但是,这不再有效,因为 A1 中的变量没有被更改。我的想法是现在它在函数中运行 take_args() 并且正在改变全局 AMOUNT?由于公共函数重构我有一个函数并且没有全局变量,所以我想在不使用我目前可以实现的任何解决方案的情况下执行此操作:

  1. 复制 def take_args(): 跨每个函数并制作我想要调整全局的所有可能变量

  2. 必须修改我传递的 MasterLoader 参数和 A1.py 以将相关变量传递给函数

如果可能的话,我希望解决方案只涉及更改 MasterLoader 的参数,就像我以前做过的那样。解决方案 2 对我不起作用,因为我有大约 60 个脚本,如果我想更改新变量,我必须重构它们,而解决方案 1 从编程角度来看很笨重(重复代码、全局变量)

4

0 回答 0