Python 基础教程:动态类型模型,超通俗解析
2,按照可变性分类
对象的可变性是指对象是否可以原处修改,原处修改是指对象的内存空间是否可以被修改。
Python 的类型从可变性上可以分为两类:可变类型和不可变类型,
可变类型:列表、字典
不可变类型: 整数,字符串、元组,集合
可变对象可以在原处被修改,不可变对象一旦创建成功,就保持不变。
三,赋值和共享引用
在使用赋值符号(=)时,如果变量对变量“赋值”,产生共享引用,两个变量引用同一个对象;如果是使用对象对变量赋值,产生的结果是创建新的对象,同时使变量引用新的对象。
例如,把变量赋值给变量时,变量之间存在共享引用,也就是说,多个变量名引用同一个对象,
a=3
b=a
此时,变量 a 和 b 同时指向一个对象。变量名赋值给变量名,使得两个变量引用相同的对象。
当把对象赋值给变量时,并不是替换了原始的对象,而是让这个变量去引用另一个完全不同的对象。
例如,当变量重新赋值时,a=‘abc’,变量 a 引用的是另一处内存空间。此时,b 是 3,而 a 是 abc。
a='abc'
1,共享引用和可原处修改
当共享引用的对象是可变类型时,对可变对象的修改,会反应到共享引用的变量上。
例如,变量 l1 和 l2 是共享引用,引用的对象是列表,而列表支持原处修改:
l1=[1,2,3]
l2=l1
当修改变量 l1 引用的对象的值时,变量 l1 和 l2 引用的还是同一个内存空间,l1 和 l2 的值是相同的。
l1[0]=5
2,共享引用和相等
==和 is 是不同的“相等”比较,前者是指值相等,后者是指对象的同一性(同一个对象)。
例如,a 和 b 既是值相等,也是对象同一的。
a=[1,2]
b=a
例如,a 和 b 是值相等,但是对象不是同一个,这说明,可变类型的常量的缓存是不可复用的。
a=[1,2]
b=[1,2]
例如,x 和 y 既是值相等,也是对象同一的,这说明,不可变类型的常量的缓存是复用的。
x=1
y=1
四,深拷贝和浅拷贝
浅拷贝是指引用的拷贝,深拷贝是指对象的拷贝。在 Python 中,浅拷贝存在于下面三种情况:
共享引用是浅拷贝,两个变量引用同一个对象。
由于 Python 会复用不可变对象,因此,不可变对象的赋值都是浅拷贝。
赋值生成的是浅拷贝。
深拷贝是指值相同的不同对象,因此,== 运算的结果是 True,而 i s 运算的结果是 False,例如,a 和 b 的值相同,但是引用的对象不同。
(1)Python 所有方向的学习路线(新版)
这是我花了几天的时间去把 Python 所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
最近我才对这些路线做了一下新的更新,知识体系更全面了。
(2)Python 学习视频
包含了 Python 入门、爬虫、数据分析和 web 开发的学习视频,总共 100 多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。
(3)100 多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。
评论