有没有办法在python中分配引用?
例如,在php中我可以这样做:
$a = 10;
$b = &$a;
$a = 20;
echo $a." ".$b; // 20, 20
Run Code Online (Sandbox Code Playgroud)
我怎么能在python中做同样的事情?
iko*_*tia 12
在python中,如果您使用非基本类型执行此操作,则它的行为与您想要的完全相同:使用引用完成分配.这就是为什么,当你运行以下内容时:
>>> a = {'key' : 'value'}
>>> b = a
>>> b['key'] = 'new-value'
>>> print a['key']
Run Code Online (Sandbox Code Playgroud)
你得到'new-value'.严格说,如果你这样做:
>>> a = 5
>>> b = a
>>> print id(a) == id(b)
Run Code Online (Sandbox Code Playgroud)
你会成真的.
但!由于原始类型是不可变的,因此您无法更改变量b本身的值.您只需使用新值创建一个新变量即可b.例如,如果您执行以下操作:
>>> print id(b)
>>> b = b + 1
>>> print id(b)
Run Code Online (Sandbox Code Playgroud)
你会得到两个不同的价值观.
这意味着Python创建了一个新变量,根据b的值计算其值,然后给这个新变量命名b.这涉及所有不可变类型.将前两个示例连接在一起:
>>> a = 5
>>> b = a
>>> print id(a)==id(b)
True
>>> b += 1
>>> print id(b)==id(a)
False
Run Code Online (Sandbox Code Playgroud)
因此,当您在Python中分配时,始终指定引用.但是某些类型无法更改,因此当您进行一些更改时,实际上是使用另一个引用创建一个新变量.