IPython有自己的范围?

时间:2010-06-29 16:31:34

标签: python scope namespaces ipython

我遇到了在python脚本结束时调用IPython时范围变量的问题。 我在脚本中调用的所有函数都可以修改变量,这些变量随后将被其他函数使用。 如果我在ipython中调用相同的函数,脚本化的函数可以访问已更改的变量,但调用ipython时存在的变量不会更改。 因此我的问题是:如何将全局变量传播到ipython中? (我当然可以做A = globals()['A'],但那很丑陋)

1 个答案:

答案 0 :(得分:0)

您可以使用静态方法(装饰器:@staticmethod)创建一个类,该方法返回该类的单例实例。该对象可以包含任意数量的作为全局变量的成员。

class Globals:
    __master = None
    somevar = 1
    othervar = 2

    @staticmethod
    def get_master():
        if Globals.__master is None:
            Globals.__master = Globals()

        return Globals.__master

g1 = Globals.get_master()
g2 = Globals.get_master()
g1.somevar += 1

print g1.somevar
print g2.somevar

打印:

2
2