2012-04-19 37 views
0

我試圖找到某種允許「保存函數」的東西,例如:一旦運行程序(包含一些函數),我們將在函數內部保存函數的地址,我們可以重新使用這些功能而不再執行。你能給我一些想法嗎(通常或特別是Python,C/C++,...)。我已經搜索了這個,但我沒有得到:(我正在考慮某種內存管理(分配,內存自由,駐留內存......我猜) 例如:我有一個函數,其地址爲「在「我怎樣才能重新使用它們(程序運行時生成)?!提前 感謝保存函數,不用重新執行

+0

這個問題很不清楚。你想解決什麼問題?調用函數而不執行它意味着什麼?這似乎相當矛盾。 – 2012-04-19 15:08:02

回答

1

好了,在Python中,函數是對象,這樣你就可以通過他們周圍,將它們分配,並從任何標籤調用它們如果你的意思是記憶/延遲加載數據,那麼在SO和Google上有很多資源可以用來做這樣的事情他們一般看起來像:

class Foo(object): 
    @staticmethod 
    def get_val(): 
     try: 
      return Foo.__val 
     except AttributeError: 
      #do run-once logic here, assign to Foo.__val 
      return Foo.__val 
+0

例如,我的意思是,第一次(只有一次),我們在某處運行F函數。現在,在內存中,F函數存儲爲。我的意思是我們可以在不重新執行的情況下調用F(通過地址或其他)。通常,如果程序正在運行,它很容易調用F,但我需要的是,即使程序停止,我們也可以調用F.有時候,這對於遞歸算法的線性化非常有用。我們可以在運行後「保存功能」,並在之後重新使用它們。 順便說一句,非常感謝回答! – s0nl4c 2012-04-19 15:23:21

+0

@azalea當你說「... [函數存儲爲...」時,你是指函數的結果(返回值)還是實際函數本身?我假設前者,因爲你談論不再重新執行代碼。 try/except塊的另一種方法是實際覆蓋存儲到返回時用於訪問該函數的標籤的值。這是你想要做什麼? – 2012-04-19 15:40:30

+0

不,我的意思是該函數駐留在內存中作爲地址0x ....我正在尋找一種可以在內存中使用函數的方式,我們可以訪問和操作它們(通過地址),直到我們釋放它們從計算機內存(即內存駐留病毒...我猜)。 我不知道你是否理解,這個想法就在那裏! – s0nl4c 2012-04-19 15:59:26