2012-11-26 119 views
1

适当所以我有很多的功能,在一个名为definitions.py需要帮助使用变量,蟒蛇

我的主文件main.py文件,该文件访问这些定义,也有使用这些功能它自己的功能。

现在main.py我有“从定义中导入*”

这两个文件依赖于一组15个初始变量,这些变量我已经放在definitions.py,这是一切都很好,我有我的所有函数都能正常工作,但是当我想将我的应用程序用作模型时,问题就出现了,我想在其中更改一些变量以查看输出的不同。

本质上我想我的初始变量是在每次调用函数时访问的碗中,我可以交换和更改这个碗中的值,这意味着下一个被调用的函数使用更新的变量。

我现在遇到的问题是,我认为,因为变量是用definitions.py写的,所以我不能改变它们。

即使在python shell中,我也可以把n1等于别的东西,执行一个使用n1的函数,但它会使用旧的n1,而不是新的,我想是因为变量在definition.py中没有改变文件。

是否有某种方法可以让我不知道的活动访问变量?谢谢。

回答

3

你应该使用一个类。例如,如果你的definitions.py文件有:

variable1 = 3 
variable2 = 'stuff' 

def spam(arg1): 
    return 'spam' + arg1 

def eggs(arg1,arg2): 
    return 'eggs' + arg1 + arg2 

将其更改为

class Definitions(): 
    def __init__(): 
     self.variable1 = 3 
     self.variable2 = 'stuff' 

    def spam(self,arg1): 
     return 'spam' + arg1 

    def eggs(self,arg1,arg2): 
     return 'eggs' + arg1 + arg2 

现在,从您的main.py文件,你可以在一个稍微不同的方式导入,扫多个参数值:

import definitions 

for parameter in xrange(0,10): 
    defs = definitions.Definitions() 
    defs.variable1 = parameter 

    # do some stuff and store the result 

# compare the various results 

请记住,现在你的功能是在一个班级内,所以不要打电话给spam('mail'),你应该拨打defs.spam('mail'),等等。

+0

感谢,使用前面的代码,我应该能够使用文本文件导出和导入变量,并在每个'main.py'定义中告诉类使用此文本文件中的变量。 – Rapid

+0

我忘了添加“self”作为所有类功能的第一个参数,这是工作所必需的。我纠正了我原来的答案。 – HerrKaputt