我有两个整数 x
和y
彼此相等。每当我更改x
时,我希望更改也会反映在y
中。我怎么能用Python做到这一点?
我认为这可以通过将两个变量都指向存储值的“存储位置”来实现。
答案 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
发生了更改同样。
在最好的情况下,您可以通过两种方式同时更改x
和y
:
多个作业(装订)
>>> 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)
答案 3 :(得分:0)
你将不得不找出另一种跟踪事物的方法。我认为您可能正在构建代码以使用可变数据类型,例如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
答案 4 :(得分:-1)
您可以通过某个功能更改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)