【问题标题】:How to point to integer variable in python如何在python中指向整数变量
【发布时间】:2019-07-09 03:53:50
【问题描述】:

我想实现与在 python 中使用不可变整数复制可变变量时相同的行为。如:

>>>b = [3,4]
>>>a = b
>>>a
[3,4]
>>>b.append(2)
>>>b
[3,4,2]
>>>a
[3,4,2]

但我有以下内容,而不是列表:

>>>b = 3
>>>a = b
>>>a
3
>>>b += 1
>>>b
4
>>>a
3

这不是我想要的,理想情况下,我希望 a 更新为 b 的新值,即 4。所以本质上是一个指针。

如何在 python 中实现这一点?

【问题讨论】:

  • int 在 python 中是不可变的,所以你要找的东西是不可能的。
  • 你不能直接这样做,但你可以创建一个包含整数的类;那么,就像你的例子一样,不同的变量可以引用同一个实例。
  • 为什么要这样做?如果你能解释你想要这种行为的原因,也许我们可以提出一些替代方案。
  • @ParitoshSingh 这并不重要,只是易用性的问题。我有一个结构对象,我希望能够引用它作为“容器”工作的对象之一的属性,即:class struct():...class segment():...,其中segment 具有属性speed ,所以希望能够做到struct.speed,并让它返回segment.speed。但显然简单地将两者等同起来是行不通的,因为整数是不可变的。

标签: python pointers immutability mutable


【解决方案1】:

由于python中没有指针的概念,但是您可以使用另一种方法来获取结果,方法是使function:-

b = 5
a = b
def update():
    global a,b
    b+=1
    a+=1

update()  # Call this function whenever you want to update the value of b AND a.
print(f"New value of a is {a}")
print(f"New value of b is {b}")

输出

New value of a is 6
New value of b is 6

希望对你有帮助。

【讨论】:

  • 这仅限于函数中的硬编码值。我需要对任何和所有价值观都灵活的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多