Python参数传递对象的引用原理解析

作者:疯了的小蜗 时间:2023-04-23 18:33:57 

大家都知道在python中,一切皆对象,变量也不再具有类型,变量仅仅是对象的一个引用,我们通常用变量来测类型,通常测得就是被这个变量引用得对象的类型。

python采用的是传递对象的引用,为了方便说明,我们来看一个例子:


test = [1]
def change1(a):
 a = [2]

def change2(a):
 a.append(3)

change1(test)
change2(test)
print test

我们来看一下最后的输出:

[1,3]

是不是有人误以为是[2,3]?那你可得好好看接下来的内容。

传参传的是对象的引用!!!!!!

所以在change1(a)函数中,我们知道形参a与test引用了同一块内存空间,然后a在函数内部被修改了,它执行了另一块内存空间,也就是存放[2]的地方,但是只是a的指向改变了,test的指向还是存放[1]的内存空间。所以,接下来change2()对这块内存空间上放的值进行了修改,就得到了我们最后看到的结果。

为了加深理解,我觉得有必要再举一个类继承的例子:


class Parent(object):
x = 1
class Child1(Parent):
pass
class Child2(Parent):
pass
print Parent.x, Child1.x, Child2.x
Child1.x = 2
print Parent.x, Child1.x, Child2.x
Parent.x = 3
print Parent.x, Child1.x, Child2.x
输出结果为:
1 1 1
1 2 1
3 2 3

在继承中,所有子类中的x原本都是引用的父类中x对象的存储空间,但是child1中的x单独指向了另一块存储空间。这样以来,的到这个结果也就不意外了

来源:https://www.cnblogs.com/insane-Mr-Li/p/9691449.html

标签:Python,参数,传递,对象,引用
0
投稿

猜你喜欢

  • 如何提高网页的维护效率

    2009-03-01 11:33:00
  • Python实现图像随机添加椒盐噪声和高斯噪声

    2023-06-13 22:54:36
  • Python3 实现文件批量重命名示例代码

    2023-06-18 00:08:32
  • python的几种开发工具介绍

    2021-09-28 01:54:44
  • 利用python调用摄像头的实例分析

    2022-01-03 22:10:14
  • php7 图形用户界面GUI 开发示例

    2023-09-12 03:16:50
  • 如何基于Python爬取隐秘的角落评论

    2022-02-17 05:31:43
  • 使用Python解析JSON数据的基本方法

    2021-07-03 13:54:21
  • MySQL单表百万数据记录分页性能优化技巧

    2024-01-20 01:34:33
  • Vue实现简单跑马灯特效

    2024-04-30 10:31:05
  • Jquery对数组的操作技巧整理

    2024-04-22 22:32:52
  • Can't connect to MySQL server on 'localhost' (10048)问题解决方法

    2024-01-19 06:58:47
  • GO语言的控制语句详解包括GO语言的指针语法

    2024-02-21 22:17:27
  • goland使用go mod模式的步骤详解

    2024-05-25 15:16:35
  • 如何利用python正确地为图像添加高斯噪声

    2023-08-03 08:26:22
  • js跳转页面方法实现汇总

    2024-04-27 15:19:23
  • python的类方法和静态方法

    2021-04-14 21:05:22
  • Swift 3.0在集合类数据结构上的一些新变化总结

    2023-10-19 02:35:47
  • Python手机与电脑游戏脚本的编写方法

    2023-11-28 18:31:44
  • python tkinter实现学生信息管理系统

    2021-11-01 18:46:16
  • asp之家 网络编程 m.aspxhome.com