如何创建可传入变量并设为True返回的Python函数?
解决变量无法被函数修改的问题
为什么你的代码不生效?
布尔值是Python里的不可变类型,当你把y或z传给func时,函数里的x只是拿到了False这个值的副本。你在函数里给x赋值True,只是修改了这个局部变量,和外部的y、z完全没关系,自然不会改变它们的值。
几种可行的解决办法
方法1:接收返回值重新赋值
这是最直接的方式,把函数返回的True重新赋值给原变量:y = False z = False def func(x): # 这里写你的其他业务逻辑 return True y = func(y) z = func(z) print(y, z) # 输出: True True方法2:用可变容器包裹变量
如果不想每次都写赋值语句,可以把变量放到列表(或字典)这种可变容器里,修改容器内的元素会直接影响外部:y = [False] z = [False] def func(x): # 这里写你的其他业务逻辑 x[0] = True return x[0] func(y) func(z) print(y[0], z[0]) # 输出: True True方法3:用类封装状态
如果需要管理多个这类状态变量,用类来封装会更规整:class State: def __init__(self, value=False): self.value = value y = State() z = State() def func(state): # 这里写你的其他业务逻辑 state.value = True return state.value func(y) func(z) print(y.value, z.value) # 输出: True True
内容的提问来源于stack exchange,提问作者Limes
相关产品推荐
相关产品推荐

