繁体   English   中英

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

[英]change the value of a variable in memory using python

(在python中)我希望能够写出类似a + b东西,因此a具有ab之和的值,也使id(a)不会改变(即改变在存储器中的变量的地址,而不是数据创建的总和的结果的新地址,并且是指将其与a )。

我尝试使用+=失败:

a, b = 5, 6
start_id = id(a)
a += b
print(start_id == id(a))
# Outputs: False

在 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答案是:因为integres在Python不变的,你必须要解决的是-像在回答这个问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM