0

我有三个 python 文件,我们称它们master.py为. 现在并没有任何功能,但需要使用相同的输入(比如变量)来做两件不同的事情。slave1.pyslave2.pyslave1.pyslave2.pyinp

我想做的是从主程序调用两个从程序,并在主程序中指定一个输入变量inp,所以我不必做两次。另外,我可以在一个主程序等中更改两个从站的输出。

我想保留两者的代码slave1.py并将slave2.py它们分开,因此如果需要我可以单独调试它们,但是当我尝试这样做时

#! /usr/bin/python
# This is master.py
import slave1
import slave2

inp = #some input

两者都slave1运行slave2然后我才能更改输入。据我了解,python 导入模块的方式是先执行它们。但是有什么方法可以延迟执行它们以便我可以指定公共输入吗?或者任何其他方式从一个地方指定两个文件的输入?

编辑: slave1slave2在给定特定初始条件的情况下执行两个不同的模拟。由于两者的输出相同,我想以类似的方式显示它们,并控制将模拟数据写入哪些文件。所以我认为将它们都导入主文件是最简单的方法。

4

3 回答 3

1

您可以随时进行导入:

inp = #some input

import slave1
import slave2

请注意,这通常被认为是糟糕的设计——最好让模块包含一个函数,而不是在导入模块时让它发生。

于 2013-04-02T13:07:07.120 回答
1

将您的从模块中的代码编写为函数,导入函数,然后master使用您需要的任何输入调用函数。如果您需要更多有状态的信息,请考虑构造一个对象。

于 2013-04-02T13:08:26.380 回答
1

看起来您的程序架构并不是真正的最佳。我认为您有两个文件在使用python slave1.py. 这对于编写脚本来说很好,但是当您导入它们时,您会遇到麻烦,就像您所经历的那样。

最好的方法是将您的代码包装在一个函数中的从属文件中(如@sr2222 所建议的那样),并从以下位置显式调用它们master.py

slave1.py/slave2.py

def run(inp):
    #your code

大师.py

import slave1, slave2

inp = "foo"
slave1.run(inp)
slave2.run(inp)

如果您仍然希望能够独立运行从站,您可以在最后添加类似这样的内容:

if __name__ == "__main__":
    inp = "foo"
    run(inp)
于 2013-04-02T13:51:20.983 回答