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