我需要从函数内部更改变量,变量是参数。
这是我尝试过的代码:
bar = False
def someFunction(incoming_variable):
incoming_variable = True
someFunction(bar)
print bar
当它返回True时返回False。
如何更改变量?
答案 0 :(得分:3)
你不能。赋值将本地名称重新绑定为一个全新的值,使旧值在调用范围内保持不变。
一种可能的解决方法是突变不会重新绑定。传入列表而不是布尔值,并修改其元素。
bar = [False]
def someFunction(incoming_variable):
incoming_variable[0] = True
someFunction(bar)
print bar[0]
您也可以通过这种方式改变类属性。
class Thing:
def __init__(self):
self.value = None
bar = Thing()
bar.value = False
def someFunction(incoming_variable):
incoming_variable.value = True
someFunction(bar)
print bar.value
而且,总是global
。
bar = False
def someFunction():
global bar
bar = True
someFunction()
print bar
以及自我修改类。
class Widget:
def __init__(self):
self.bar = False
def someFunction(self):
self.bar = True
w = Widget()
w.someFunction()
print w.bar
但是对于最后两个,你将失去将不同参数传递给someFunction
的能力,因此它们可能不合适。取决于你想要做什么。
答案 1 :(得分:1)
在你的例子中:
bar is global variable existing oustide the scope of function someFunction
Whereas incoming_variable is local variable residing only in the scope of function someFunction
致电someFunction(bar)
:
False
)的值赋给局部变量incoming_variable
如果您想简单地更改变量栏:
def someFunction(incoming_variable):
bar= incoming_variable