Python 如何避免多次调用同一函数?

Python 如何避免多次调用同一函数?,python,Python,我想用python模拟我的问题,我是python编程新手。只是想检查是否有办法避免多次调用相同的函数(每次返回相同的值) 例如: 是否有一种方法可以在一个位置调用fun(),并且赋值可以将同一对象绑定到多个名称 a = b = c = 42 请注意,所有名称都指向同一对象,因此如果该对象是可变的,则每个名称的名称都会发生变化 >>> a = b = [] >>> a.append(None) >>> b [None] 手动缓存返回值的一个

我想用python模拟我的问题,我是python编程新手。只是想检查是否有办法避免多次调用相同的函数(每次返回相同的值)

例如:


是否有一种方法可以在一个位置调用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