2013-09-26 47 views
0

進口可以說我有一個名爲module1與模塊如下:是否蟒蛇執行對進口

def main(): 
    print 'K DawG' 

main() 

,並只用這條線module2

import module1 

什麼基本情況是,當我運行module1確實打印K DawG按預期和當我運行moudle2,除非我明確指出module1.main()不應該做任何事情,但它也打印K DawG

這是爲什麼? python是否運行在導入期間導入的腳本?如果是這樣,我怎麼能阻止這種情況發生?

回答

8

是的,當然一個腳本在導入時執行。除了使用不同的編程語言外,這是一個你不能改變的事實。

的解決方案通常是這樣的:

if __name__ == '__main__': 
    main() 

這樣,如果你運行它使用python whatever.py但不導入當它纔會執行。


要在導入過程中會發生什麼更詳細:

如果模塊已經在sys.modules,該條目將被退回。否則,將執行該模塊的代碼,並將該文件中的全局值存儲在sys.modules條目中。所以只有在你第一次導入一個模塊時,它的代碼纔會被執行。