关于值传递和引用传递,综合目前各种的说法,可以得出这样的结论:可变对象为引用传递,不可变对象为值传递。但是python中一切事物均视为对象,个人觉得值传递和对象传递只不过是对象引用的两种表现。如果是可变对象的引用(比如字典、列表),就能修改对象的原始值,相当于通过传引用来传递对象,不可变对象(如数字、字符、元组),就不能通过直接修改原始对象,相当于是通过传值传递对象。 具体的表现就是当赋值(引用)列表或者字典时,如果改变引用的值,就修改了原始的对象。 而对于不可变对象 通过上面的例子,个人觉得对于可变对象的引用第一个例子中,对于b的改变仅仅是改变了它的元素,b依然是[1,2,3,4]这个列表的引用,所以不管是append还是pop都不会改变原始对象。而例2中当改变不可变对象i1时,i1和i就完全没有关系了,此时i1和i已经是两个对象的引用,也就是说i1=2相当于已经创建了一个新的值为2的对象。理解可能会有偏差,欢迎大家指正。 |
python值传递和引用传递
最新推荐文章于 2024-08-13 14:59:01 发布