Python 如何避免多次调用同一函数?
我想用python模拟我的问题,我是python编程新手。只是想检查是否有办法避免多次调用相同的函数(每次返回相同的值) 例如:Python 如何避免多次调用同一函数?,python,Python,我想用python模拟我的问题,我是python编程新手。只是想检查是否有办法避免多次调用相同的函数(每次返回相同的值) 例如: 是否有一种方法可以在一个位置调用fun(),并且赋值可以将同一对象绑定到多个名称 a = b = c = 42 请注意,所有名称都指向同一对象,因此如果该对象是可变的,则每个名称的名称都会发生变化 >>> a = b = [] >>> a.append(None) >>> b [None] 手动缓存返回值的一个
是否有一种方法可以在一个位置调用fun(),并且赋值可以将同一对象绑定到多个名称
a = b = c = 42
请注意,所有名称都指向同一对象,因此如果该对象是可变的,则每个名称的名称都会发生变化
>>> a = b = []
>>> a.append(None)
>>> b
[None]
手动缓存返回值的一个非常简单的方法是:
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
一般来说,你要找的是备忘录。根据查询的复杂性,有很多方法可以做到这一点;python 3具有非常有用的功能。您可以使用memoize python decorator!!。它将缓存您的方法或函数,下次从缓存调用时,您只需在这种情况下调用函数一次<代码> var=f()/代码>一次,然后使用<代码> var >代码>每当你需要它时,它不会再次调用函数。这就是为什么它缺少某种区分,即您是希望重用返回值,还是希望函数返回相同的值而不调用
调用另一个\u fun
。
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