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