分配参考

nuk*_*ukl 2 python

有没有办法在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中分配时,始终指定引用.但是某些类型无法更改,因此当您进行一些更改时,实际上是使用另一个引用创建一个新变量.

  • 在python中没有基本类型这样的东西. (3认同)