写点什么

Python 基础教程:动态类型模型,超通俗解析

作者:程序媛可鸥
  • 2022 年 3 月 19 日
  • 本文字数:1202 字

    阅读完需:约 4 分钟

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 多个练手项目


我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。



用户头像

Python编程资料加Q群免费领取:419829237 2022.03.14 加入

还未添加个人简介

评论

发布
暂无评论
Python 基础教程:动态类型模型,超通俗解析_Python_程序媛可鸥_InfoQ写作平台