2016-02-28 66 views
4

我有兩個相互相等的整數xy。每當我更改x我希望更改也反映在y。我如何用Python做到這一點?Python - 當一個整數變量改變時,使第二個變量相同

我認爲這可以通過將兩個變量指向存儲值的「存儲位置」來實現。

+0

可能重複的[如何觸發函數的值更改?](http://stackoverflow.com/questions/6190468/how-to-trigger-function-on-value-change) –

+2

什麼是數據類型?對於列表等可變對象,您已經在那裏。對於整數和字符串等不可變類型,您需要一個容器。 – tdelaney

+0

更新了問題 –

回答

0

同時封裝在一個函數或這樣......讀/寫是通過功能控制從而保證您需要

0

行爲從Rosetta Code

Python沒有指針和所有的Python名(變量)隱式引用對象。 Python是一種後期綁定的動態語言,其中「變量」是對對象的無類型綁定。 (因此,Pythonistas傾向於使用術語名稱而不是「變量」,術語綁定代替「賦值」)。

從我可以推斷,與整數工作時,你不能指向yx並採取行動來x和看到的變化發生在y爲好。

在最好的,你可以改變xy同時,在2種方式:

  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) 
    
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 
-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) 
+1

一般來說,使用'global'是不太理想的。修復一個糟糕的結構比試圖用'global'解決它更好。 –

1

列表和字典作爲在蟒蛇的指針,所以你要嘗試看起來像這樣什麼哈克版本:

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] 
相關問題