2013-03-01 113 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