我想定义我的函数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