使用导入模块进行IPython交互式运行

时间:2013-03-01 21:29:04

标签: python ipython

我有一个模块如下:

module1.py

Class bla():
  code here

def main():

  g1=bla()

if __name__ == '__main__':
  main()

当我执行ipython module1.py或进入IPython并import module1时,代码按预期运行。但是,当我输入类似print g1的内容时,它表示g1未定义,即使我在主程序中定义了g1。似乎代码运行主程序,然后以某种方式“退出”它只是留下我的ipython提示。我想使用我在main函数中定义的变量......

我该怎么做?

1 个答案:

答案 0 :(得分:3)

您必须将g1标记为全局:

def main():
    global g1
    g1 = bla()

通常,函数中定义的任何名称都只是函数的本地名称。您仍然必须从模块中导入名称,或将其作为模块的属性引用:

import module1

print module1.g1