让我们考虑Python中的以下函数(它只是一个虚拟示例):
from math import factorial
def f(x, param):
init = factorial(param)
return x**param / init
此函数在主代码中多次调用,具有不同的x
值但具有相同的param
值。但是,param
的值是任意的,事先不知道。
如何在第一个函数调用中预先计算或缓存init
的值,以便不需要在每次函数调用时重新计算它?
答案 0 :(得分:2)
您可以使用functools中的lru_cache来缓存因子调用的结果。以下示例从math.factorial,
创建factorial的自定义缓存版本import math
import functools
@functools.lru_cache()
def factorial(n):
return math.factorial(n)
def f(x, param):
init = factorial(param)
return x**param / init
答案 1 :(得分:1)
您只需将param的默认值设置为全局变量即可。然后,当您运行程序并设置param时,只需更改值
return status(422, "your chosen status message");
答案 2 :(得分:1)
您可以使用init和param实现一个类,如下所示:
from math import factorial
class f:
def __init__(self, param):
self.init = factorial(param)
self.param = param
def __call__(self, x):
return x**self.param / self.init
a = f(10) # __init__
for i in range(10):
print(a(i)) # __call__