在函数内更改函数参数的值 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
我想定义我的函数 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