更改函数python中函数的参数值

时间:2015-09-02 03:55:14

标签: python variables global-variables parameter-passing

我想定义我的函数 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 的值也会更改。 我想知道是否有其他方法可以实现结果?谢谢。

2 个答案:

答案 0 :(得分:2)

你可以利用一个可变的默认值(通常这是一个让人们吵架的问题,我从未想过我会故意使用它):

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

答案 1 :(得分:0)

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

这样的东西
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