Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 模块中的公共变量_Python - Fatal编程技术网

Python 模块中的公共变量

Python 模块中的公共变量,python,Python,我有三个python文件,让我们称它们为master.py,slave1.py和slave2.py。现在slave1.py和slave2.py没有任何函数,但是需要使用相同的输入执行两个不同的操作(比如变量inp) 我想做的是从master调用两个从程序,并在master中指定一个输入变量inp,这样我就不必做两次。同样,我可以在一个主程序中改变两个从程序的输出 我希望将slave1.py和slave2.py的代码分开,以便在需要时可以单独调试它们,但当我尝试这样做时 #! /usr/bin/p

我有三个python文件,让我们称它们为
master.py
slave1.py
slave2.py
。现在
slave1.py
slave2.py
没有任何函数,但是需要使用相同的输入执行两个不同的操作(比如变量
inp

我想做的是从master调用两个从程序,并在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
在给定特定初始条件下执行两种不同的模拟。由于两者的输出是相同的,我希望以类似的方式显示它们,并控制将模拟数据写入哪些文件。所以我认为将它们导入主文件是最简单的方法

您可以随时进行导入:

inp = #some input

import slave1
import slave2

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

您可以随时进行导入:

inp = #some input

import slave1
import slave2

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

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

作为函数从你的从属模块中写入代码,导入函数,然后用你需要的任何输入从<代码>主代码>代码中调用函数。如果需要有更多的状态信息,请考虑构造一个对象。

看起来,程序的体系结构并不是最理想的。我认为有两个文件在使用
pythonslave1.py
运行时会立即执行。这对于脚本编写来说很好,但是当您导入它们时,您会遇到麻烦,正如您所经历的那样

最好是将代码封装在函数中的从属文件中(如@sr2222所建议的),并从
master.py
显式调用它们:

slave1.py/slave2.py

def run(inp):
    #your code
大师

import slave1, slave2

inp = "foo"
slave1.run(inp)
slave2.run(inp)
如果您仍然希望能够独立运行从机,您可以在末尾添加如下内容:

if __name__ == "__main__":
    inp = "foo"
    run(inp)

看起来您的程序的体系结构并不是真正最优的。我认为有两个文件在使用
pythonslave1.py
运行时会立即执行。这对于脚本编写来说很好,但是当您导入它们时,您会遇到麻烦,正如您所经历的那样

最好是将代码封装在函数中的从属文件中(如@sr2222所建议的),并从
master.py
显式调用它们:

slave1.py/slave2.py

def run(inp):
    #your code
大师

import slave1, slave2

inp = "foo"
slave1.run(inp)
slave2.run(inp)
如果您仍然希望能够独立运行从机,您可以在末尾添加如下内容:

if __name__ == "__main__":
    inp = "foo"
    run(inp)

你能详细说明一下你打算在奴隶身上做什么,以及他们需要从主人那里得到什么信息吗。看起来您现在正在生成意大利面代码。您能否详细说明一下您打算在从机中执行什么操作,以及它们需要从主机获得什么输入。看起来您现在正在生成意大利面代码。