1

所以我在一个名为 definitions.py 的文件中有很多函数

我的主文件 main.py 可以访问这些定义,并且使用这些函数也有自己的功能。

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

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

本质上,我希望我的初始变量位于一种碗中,每次调用函数时都会访问该碗,并且我可以交换和更改该碗中的值,这意味着调用的下一个函数使用更新的变量。

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

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

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

4

1 回答 1

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')等等。

于 2012-11-26T15:01:18.717 回答