2013-03-14 86 views
0

我是新来的python /编程,所以也许我一直在寻找这个问题的错误语法。在Python脚本之间传递变量的简单方法?

我工作的一些Python脚本。例如,在其中一个python脚本中,我抓取传感器数据,如时间,海拔高度和压力,我们称之为getsensor.py

然后,我有另一个需要来自“getsensor.py”的数据的脚本,我们称之为“buildstring.py”

所以,我想有一个简单的整体python脚本,这将要求“getsensor.py”,然后调用“buildstring.py”

我认为做的方式这将是发出“从getsensor进口时间,高度,气压”在“buildstring.py”但这似乎不是什么我期待......任何意见或建议,以点我在正确的方向的开始?试图保持它非常简单。

编辑:好像通过发出“进口X”它在运行该脚本。所以当我这样做时,我的X脚本包含一些代码,这些代码会导致我的脚本以无限循环运行。唯一的节目,我真的做的是组装,所以我不知道如何保存,可以多个Python脚本

+0

你应该使用getsensor.py作为模块并将其包含在buildstring.py中。然后可以调用getsensor.py中使用的函数来获取构建字符串中的传感器读数。 – 2013-03-14 16:49:15

+1

你是什么意思,“这似乎不是我所期待的”?错误?一些代码? – 2013-03-14 16:49:22

回答

0

通常其定制之间共享让每个模块中的入口点的数据,那么你可以做一些事情像

from buildstring import app 
from getsensor import main 

result = app(1) 
main(result) 
2

有很多方法可以做到这一点,一个容易被创建集中式脚本并执行它来运行你的函数

可以导入必要的,就像你在questiong列出的功能

#main.py  

from getsensor import time, altitude 
from buildstring import your_function  

if __name__ == '__main__': 
    result = altitude() 
    your_function(result) 

正如你可以看到有很多的方式来完成你是什么tryign做的,它给你的程序的结构和过多考虑模块之间的关系,使你的程序是可扩展性和可维护性是最重要的

+0

那么技术上发生的是,当你发出“from getsensor import time,altitude”时,它正在运行该脚本,然后返回到下一行代码......正确? – user2170780 2013-03-14 16:52:47

+0

@ user2170780不,它是进口这些功能集成到当前的命名空间,而不是运行它们 – dm03514 2013-03-14 17:03:36

+0

所以,如果它没有运行它们,然后在这些变量中的值将是......什么? – user2170780 2013-03-14 17:08:05

0

取决于您如何/在哪里存储变量。

如果你有他们为全局变量,看this solution

但是,我会尝试通过方法调用将变量从getsensor.py传递到buildstring.py

例如,在buildstring.py写取变量作为arguement的方法:

def getVars(time, altitude, pressure): 
    # Do stuff with variables here, or pass them to other local methods 

而且在getsensor.py:

x = 100 
y = 2 
z = 8 

def passVars(): 
    import buildstring.py 
    buildstring.getVars(x, y, z)