Python - 当一个整数变量被更改时,使第二个变量相同

时间:2016-02-28 05:36:01

标签: python

我有两个整数 xy彼此相等。每当我更改x时,我希望更改也会反映在y中。我怎么能用Python做到这一点?

我认为这可以通过将两个变量都指向存储值的“存储位置”来实现。

5 个答案:

答案 0 :(得分:1)

列表和词典在python中充当指针,所以你正在尝试的hacky版本看起来像这样:

In [16]: x = y = [0]

In [17]: x
Out[17]: [0]

In [18]: y
Out[18]: [0]

In [19]: x[0] = 10

In [20]: y
Out[20]: [10]

In [21]: x
Out[21]: [10]

答案 1 :(得分:0)

将两者封装在函数等中......通过函数控制读/写,从而确保您需要的行为

答案 2 :(得分:0)

来自Rosetta Code

  

Python没有指针,所有Python名称(变量)都是对对象的隐式引用。 Python是一种后期绑定的动态语言,其中“变量”是对象的无类型绑定。 (因此Pythonistas更喜欢术语名称而不是“变量”而术语bind代替“assign”)。

根据我的推断,在处理整数时,您无法将y指向x并对x执行某些操作,并看到y发生了更改同样。

在最好的情况下,您可以通过两种方式同时更改xy

  1. 多个作业(装订)

    >>> x = y = 9
    >>> print (x, y)
    (9, 9)
    >>> x = 6  # won't change y
    >>> print (x, y)
    (6, 9)
    
  2. 元组拆包

    >>> x, y = [9] * 2
    >>> x, y = (9, ) * 2  # alternative
    >>> print (x, y)
    (9, 9)
    >>> x = 6  # y says "nice try, x"
    >>> print (x, y)
    (6, 9)
    

答案 3 :(得分:0)

You can't.

你将不得不找出另一种跟踪事物的方法。我认为您可能正在构建代码以使用可变数据类型,例如listdict,或者可能创建自定义数据:

class MutableInt:
    def __init__(self, value=0):
        self._value = value

    def __add__(self, other):
        self._value += other

    def __repr__(self):
        return str(self._value)

mutable_int = MutableInt(4)
print(mutable_int) # 4

def addOne(mutable_int):
    mutable_int += 1

addOne(mutable_int)
print(mutable_int) # 5

答案 4 :(得分:-1)

您可以通过某个功能更改xy,请尝试以下代码:

def change_x(value):
    global y
    y = value
    return value

def change_y(value):
    global x
    x = value
    return value

x = y = 3
print(x,y)
x = change_x(5)
print(x,y)
y = change_y(6)
print(x,y)