2010-06-01 110 views
5

我在寫一個python包。我使用插件的概念 - 每個插件都是Worker類的專業化版本。每個插件都是作爲一個模塊(腳本?)編寫的,並在單獨的過程中生成。導入一個公共模塊的包中的幾個模塊

由於插件之間的基底共性(例如,所有延伸的基類的工人')的,該插件模塊通常看起來像這樣:

import commonfuncs 

def do_work(data): 
    # do customised work for the plugin 
    print 'child1 does work with %s' % data 

在C/C++,我們有包括防護裝置,其防止頭被多次包含。

我是否需要類似Python的東西,如果是的話,我如何確保commonfuncs不是多次被「包含」?

+0

請使用「101010」按鈕正確格式化代碼。 – 2010-06-01 14:27:23

回答

12

不用擔心:只有在程序執行過程中模塊的第一個import導致它被加載。在第一次導入之後,每一次進一步導入都只是從「緩存」字典中取出模塊對象(sys.modules,由模塊名稱字符串索引),因此它的速度非常快,沒有副作用。因此,不需要保護。

+0

唷!多數民衆贊成在知道救濟。簡潔(快速回復)+1。任何機會發送鏈接到我可能閱讀的地方? – morpheous 2010-06-01 14:27:32

+1

+1:「不需要警惕」也許可以說是「守衛是內置的」。 – 2010-06-01 14:28:00

+0

http://docs.python.org/reference/simple_stmts.html#grammar-token-import_stmt – 2010-06-01 14:28:31

相關問題