我有兩個相互相等的整數x
和y
。每當我更改x
我希望更改也反映在y
。我如何用Python做到這一點?Python - 當一個整數變量改變時,使第二個變量相同
我認爲這可以通過將兩個變量指向存儲值的「存儲位置」來實現。
我有兩個相互相等的整數x
和y
。每當我更改x
我希望更改也反映在y
。我如何用Python做到這一點?Python - 當一個整數變量改變時,使第二個變量相同
我認爲這可以通過將兩個變量指向存儲值的「存儲位置」來實現。
同時封裝在一個函數或這樣......讀/寫是通過功能控制從而保證您需要
行爲從Rosetta Code:
Python沒有指針和所有的Python名(變量)隱式引用對象。 Python是一種後期綁定的動態語言,其中「變量」是對對象的無類型綁定。 (因此,Pythonistas傾向於使用術語名稱而不是「變量」,術語綁定代替「賦值」)。
從我可以推斷,與整數工作時,你不能指向y
到x
並採取行動來x
和看到的變化發生在y
爲好。
在最好的,你可以改變x
和y
同時,在2種方式:
多任務(綁定)
>>> x = y = 9
>>> print (x, y)
(9, 9)
>>> x = 6 # won't change y
>>> print (x, y)
(6, 9)
元組拆包
>>> 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)
你將不得不找出另一種方式來跟蹤事情。我想你也許可以構建你的代碼使用可變數據類型,如list
或dict
,或者創建自定義一個:
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
您可以通過功能改變x
或y
,嘗試下面的代碼:
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)
一般來說,使用'global'是不太理想的。修復一個糟糕的結構比試圖用'global'解決它更好。 –
列表和字典作爲在蟒蛇的指針,所以你要嘗試看起來像這樣什麼哈克版本:
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]
可能重複的[如何觸發函數的值更改?](http://stackoverflow.com/questions/6190468/how-to-trigger-function-on-value-change) –
什麼是數據類型?對於列表等可變對象,您已經在那裏。對於整數和字符串等不可變類型,您需要一個容器。 – tdelaney
更新了問題 –