使用python更改内存中变量的值

使用python更改内存中变量的值,python,Python,(python语言) 我希望能够编写类似于a+b的代码,因此a具有a和b之和的值,并且id(a)不会改变(也就是说,更改内存中变量地址处的数据,而不是使用求和结果创建一个新地址,并用a引用它) 我尝试使用+=失败: a,b=5,6 启动id=id(a) a+=b 打印(开始\u id==id(a)) #输出:假 在python中,传递引用仅适用于对象。 如果您想做这样的事情,您需要创建一个表示整数的对象 您还可以在调用函数时获取程序的作用域来欺骗系统 def function(a,b, scop

(python语言) 我希望能够编写类似于
a+b
的代码,因此
a
具有
a
b
之和的值,并且
id(a)
不会改变(也就是说,更改内存中变量地址处的数据,而不是使用求和结果创建一个新地址,并用
a
引用它)

我尝试使用
+=
失败:

a,b=5,6
启动id=id(a)
a+=b
打印(开始\u id==id(a))
#输出:假

在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
请注意,这里的结果将绑定到具有相同值a的第一个变量,该值可能是一个大的异常

想要创建这样一个加法函数(使用示例:“a+b”),它将修改a而不返回任何内容(在Python中)

在函数中执行此操作时,您不能简单地使用
a+=b
,因为
a
将被视为未定义的局部变量。因此,您需要明确告知您要使用全局变量
a

def add_to_a(val):
   global a
   a += val

a = 42
b = 1
add_to_a(b)

由于现在的实际问题是为什么
id
在更改
a
的值后会发生变化,答案是:因为整数在python中是不可变的,您必须解决这个问题-就像在Try中的答案一样:
a=a+b
a+=b
:-)尝试运行此命令:“”a=5b=6d=[]d+=[id(a),id(b)]a+=b d+=[id(a)]打印(d)‘我需要将函数结果存储在变量ADO的存储单元中,这可以回答您的问题吗?