2013-03-01 110 views
1

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提示符。我想用我在主函数中定义的变量...

我该怎么办呢?

+0

的Martijn Pieters的的回答这个问题会更有意义,如果你有怎样的理解“范围“在Python中起作用。这是一个相当不错的介绍,它是如何工作:http://beastie.cs.ua.edu/cs150/book/index_13.html – Wilduck 2013-03-01 21:37:25

回答

3

你必须标记g1作为一个全球性的:

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

通常情况下,在一个函数定义的任何名称是本地唯一的功能。你仍然必须进口名称从模块,或把它称为模块的属性:

import module1 

print module1.g1