gpt4 book ai didi

python - 是否可以保存函数的返回值以供下次调用时使用?

转载 作者:行者123 更新时间:2023-12-04 00:55:53 24 4
gpt4 key购买 nike

我正在编写一个迭代计算积分的函数,对于下一次估计,我需要之前的结果。

我正在使用一个辅助变量来存储之前的结果并且它可以工作,但是是否可以在自己的函数中执行此操作(类似于在 fortran 中 SAVE 声明的变量)?

最佳答案

没有什么是自动的,但是 Python 中的函数可以有属性。因此,例如,这有效:

>>> def f(n):
... result = n+1
... f.last = result
... return result
>>> f(6)
7
>>> f.last
7

last 这个名字没什么神奇的——只是我编造的一个任意标识符。当然,您也可以在函数体外部绑定(bind)该属性:

>>> f.last = 12
>>> f.last
12

魔法

如果你做了很多这样的事情(我真的不推荐这样做),可以用一些代码来自动化它,通过编写一个“装饰器”,你可以应用到函数来改变它们的行为。这非常神奇:

# Decorator to change a function to save its last return value
# in attribute `last`.
from functools import wraps
def addlast(f):
@wraps(f)
def g(*args, **kw):
g.last = f(*args, **kw)
return g.last
g.last = None
return g

鉴于此,您可以将“@addlast”放在函数定义之前以改变其行为,而无需改变函数本身:

@addlast
def f(i, j):
return i + j

print(f.last)
print(f(3, 9))
print(f.last)

显示:

None
12
12

关于python - 是否可以保存函数的返回值以供下次调用时使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62616075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com