需要帮助正确使用变量python

时间:2012-11-26 14:55:41

标签: python variables

所以我在一个名为definitions.py

的文件中有很多函数

我的主文件main.py访问这些定义,并且还使用这些函数具有自己的函数。

现在在main.py我有'来自定义导入*'

两个文件都依赖于一组15个初始变量,这些变量我放在definitions.py中,这一切都很好,我的所有功能都运行正常,当我想将我的应用程序用作模型,我想要改变一些变量,看看输出是如何不同的。

基本上我希望我的初始变量在一个碗中,每次调用一个函数时都会访问它,我可以交换并更改这个碗中的值,这意味着下一个被调用的函数使用更新的变量。 / p>

我现在遇到的问题是,我认为,因为变量写在definitions.py就是那样,我无法改变它们。

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

是否有某种方法可以获得我不知道的实时访问变量?谢谢。

1 个答案:

答案 0 :(得分: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'),依此类推。