首页 > 解决方案 > 使用函数永久更新其参数之一

问题描述

如何创建一个函数来更新其参数之一的值?考虑以下示例:

def f(x,b):
    b+=1
    return x*b

b=4
a=f(1,b)
print a
print b

的更新b只在函数内部有效,b在函数使用后保持原值。当然,在这种情况下,我也可以通过返回b然后使用来解决问题,a,b=f(1,b)但我不想这样做。

如果我真的想b更新并更改其值而不显式返回它,我该怎么办?

标签: pythonfunction

解决方案


您想要保持状态,这强烈表明需要一个类。我假设第二个和后续调用f应该使用保存的b变量。这是一个保持该状态并使用魔术方法使其可调用的类:

class F:

    def __init__(self, b):
        self.b = b

    def __call__(self, x):
        self.b += 1
        return x * self.b

b = 4
f = F(b)
a = f(1)
print(a, f.b)

推荐阅读