相信你们一定在我的公众号已经看到了,这篇文章关于 引用传递变量 的简单介绍,在这里我们将更加深入的理解这篇文章的重点,可以关注我的公众号哦 《志学Python》
这篇文章我已经放到我的github 上面了,可以给我star,谢谢
how-do-i-pass-a-variable-by-reference
如何通过引用传递变量?
其实想问的是它这个类里面,在 __init__
方法初始化的时候,调用了 change()
方法,如何将改变 __init__
里面的 self.variable
这里变量的值,但是显然这种方式是行不通的,如果要通过引用,我们可以使用下面这种改造方式
但是我们需要更加深入的了解到底是怎么回事
参数通过赋值传递。其背后的理由是双重的:
传入的参数实际上是对对象的引用(但引用是通过值传递的) 有些数据类型是可变的,但有些则不是 所以:
如果将可变对象传递给方法,则该方法将获得对该对象的引用,并且可以对其进行突变,但是如果您将该引用重新绑定到该方法中,则外部作用域对此一无所知完成后,外部参考仍将指向原始对象。
如果将不可变对象传递给方法,则仍然无法重新绑定外部引用,甚至无法使对象发生突变
我们尝试改变列表里面数据
由于传入的参数是对的引用outer_list,而不是其副本,因此我们可以使用变异列表方法对其进行更改,并使更改反映在外部作用域中。
由于the_list参数是通过值传递的,因此为其分配新列表不会影响方法外部的代码。该the_list是副本outer_list的参考,我们不得不the_list指向一个新的列表,但没有办法改变outer_list的值
它是不可变的,因此我们无能为力,无法更改字符串的内容 现在,让我们尝试更改参考
同样,由于the_string参数是通过值传递的,因此为其分配新的字符串不会影响方法外部的代码。该the_string是副本outer_string的参考,我们不得不the_string指向一个新的字符串,但没有办法改变,outer_string
可以返回新值。这不会改变事物传递的方式,但是可以让您获得想要的信息:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。