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