在函数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的值也会改变。我想知道是否有其他的方法来实现这个结果?谢谢你。

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

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

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

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

每次调用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

相关内容

  • 没有找到相关文章

最新更新