为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

守着星空守着你 2022-08-16 10:51:57
(在 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


查看完整回答
反对 回复 2022-08-16
?
繁星淼淼

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

请注意,此处的结果将绑定到第一个具有相同值的变量,该变量可能是一个大的烦恼。


查看完整回答
反对 回复 2022-08-16
  • 2 回答
  • 0 关注
  • 65 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信