2015-09-26 147 views
-2

我想模擬我的問題在Python中,我是新的Python編程。只是想檢查是否有一種方法可以避免多次調用相同的函數(每次返回相同的值)。如何避免多次調用python相同的函數?

如:

def fun(): 
    return calling_another_fun()# return always same value say eg: 200 

var = fun() var1 = fun() var2 = fun() 

print "calling first time"+str(var) print "calling second time"+str(var1) print "calling third time"+str(var2) 

有沒有一種方法在一個地方和

+2

你可以使用memoize python decorator !!。它會緩存你的方法或函數,下次調用它會從緩存中給出 – dhana

+0

在這種情況下,你只需要調用一次函數。 'var = fun()'一次,然後在每次需要時使用'var',它不會再次調用函數。 – IanAuld

+0

你最後一句話在中間結束,這就是爲什麼它缺少某種區別,你是否想要重用返回值,或者希望函數在不調用'calling_another_fun'的情況下返回相同的值。 – MisterMiyagi

回答

1

分配到大呼過癮()可以在同一對象綁定到多個名稱。

a = b = c = 42 

注意,所有名稱指向同一對象,因此,如果對象是可變的,然後它會出現更改每個名字。

>>> a = b = [] 
>>> a.append(None) 
>>> b 
[None] 
1

一個非常簡單的方法來手動緩存返回值是這樣的:

def my_func(): 
    if my_func._retval is None: 
    my_func._retval = ... # compute your return value here 
    return my_func._retval 
my_func._retval = None 

一般來說,你在找什麼是memoization的。有different approaches這樣做,這取決於您的查詢的複雜性; python 3有相當有用的lru_cache

相關問題