(在 python 中)我希望能够写出类似的东西,并且作为结果具有和的总和的值,并且不会更改(即,在内存中变量的地址处更改数据,而不是创建一个具有总和结果的新地址并引用它)。a + baabid(a)a我的尝试使用失败:+=a, b = 5, 6start_id = id(a)a += bprint(start_id == id(a))# Outputs: False
2 回答
拉丁的传说
TA贡献1789条经验 获得超8个赞
想要做这样一个加法函数(使用示例:“a + b”),它将修改a并且不返回任何内容(在Python中)
当在函数中执行此操作时,您不能简单地使用,因为将被视为未定义的局部变量。因此,您需要明确告知您要使用全局变量:a += baa
def add_to_a(val):
global a
a += val
a = 42
b = 1
add_to_a(b)
由于现在的实际问题是为什么在更改答案的值后会发生变化:因为积分在python中是不可变的,你必须解决这个问题 - 就像这个问题的答案一样ida
繁星淼淼
TA贡献1775条经验 获得超11个赞
在 python 中,仅对对象传递引用。如果你想做这样的事情,你需要创建一个表示你的整数的对象。
您还可以通过在调用函数时获取程序的作用域来欺骗系统
def function(a,b, scope=locals()):
var_name = [key for key, value in scope.items() if value == a][0]
scope[var_name] += b
a = 4
b = 5
function(a, b)
print(a) #output 9
请注意,此处的结果将绑定到第一个具有相同值的变量,该变量可能是一个大的烦恼。
添加回答
举报
0/150
提交
取消