在函数内更改函数参数的值 python

change value of parameters of a function within the function python

我想定义我的函数 f(x,a),其中 'a' 的值发生变化,因此每次调用 f(x,a) 时,'a' 的值都会不同。到目前为止,以下代码可以达到目的:

a=0
def f(x):
    global a
    a=a+1
    return a+x**2

在这种情况下,每次调用 f(x) 时,a 的值也会更改。 我想知道是否还有其他方法可以实现结果?谢谢。

每次调用时都应将 a 传递给 f 而不是将 a 用作全局变量。像

def f(x, a):
    # your code

一个完整的例子

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

if __name__ == "__main__":
    x = 1
    a = 2
    print f(x, a)
    # output 4

您可以利用可变默认值(通常这是一个容易让人犯错的陷阱,我从没想过我会故意使用它):

def f(x, a={"value":0}):
    a["value"] += 1
    #Do other stuff

但是由于您试图用一些数据来封装一个功能,您最好创建一个新的 class:

class Foo:
    def __init__(self):
        self.a = 0

    def f(self, x):
        self.a += 1
        return x + self.a

foo = Foo()
foo.f(0) # 1
foo.f(0) # 2