我有三个python文件,我们称之为master.py
,slave1.py
和slave2.py
。现在slave1.py
和slave2.py
没有任何功能,但需要使用相同的输入执行两个不同的操作(比如变量inp
)。
我想做的是从master调用两个slave程序,并在master中指定一个输入变量inp
,所以我不必两次。另外,我可以在一个主程序等中更改两个从站的输出。
我想将slave1.py
和slave2.py
的代码分开,以便我可以根据需要单独调试它们,但是当我尝试时
#! /usr/bin/python
# This is master.py
import slave1
import slave2
inp = #some input
slave1
和slave2
运行之前我可以更改输入。据我了解,python导入模块的方式是首先执行它们。但有没有办法延迟执行它们,所以我可以指定公共输入?或者从一个地方指定两个文件的输入的任何其他方式?
编辑: slave1
和slave2
执行两种不同的模拟,给出特定的初始条件。由于两者的输出是相同的,我想以类似的方式显示它们,以及控制将模拟数据写入哪些文件。所以我认为将它们导入主文件是最简单的方法。
答案 0 :(得分:1)
您可以随时进行导入:
inp = #some input
import slave1
import slave2
请注意,这通常被认为是糟糕的设计 - 您最好不要让模块包含一个函数,而不是在导入模块时让它发生。
答案 1 :(得分:1)
将从属模块中的代码作为函数编写,导入函数,然后使用您需要的任何输入从master
调用函数。如果您需要更多有状态信息,请考虑构建一个对象。
答案 2 :(得分:1)
看起来您的程序架构并不是最佳选择。我认为您有两个文件在使用python slave1.py
运行时会立即执行。这对于编写脚本很有用,但是当你导入它们时,你会遇到麻烦。
最好将代码包装在函数的slave文件中(如@ sr2222所建议),并从master.py
明确调用它们:
slave1.py/vertin2.py
def run(inp):
#your code
master.py
import slave1, slave2
inp = "foo"
slave1.run(inp)
slave2.run(inp)
如果你仍然希望能够独立运行奴隶,你可以在最后添加这样的东西:
if __name__ == "__main__":
inp = "foo"
run(inp)