2015-09-26 101 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

相关问题