当前位置: 首页 > 科技观察

Python五个容易混淆的核心概念

时间:2023-03-19 14:57:21 科技观察

在过去的一周里思考和总结了五个比较容易混淆的Python核心概念,附上我最常用的区分和理解方法,相信会对你有所帮助!1变量赋值和AliasPython变量赋值是指创建一个对象并将其绑定到一个变量上。如下创建一个list对象,并赋值给变量a:a=[3,1,2]上面的基本范式可以表示为:variable1=object1,Alias指的是变量1赋值给变量2的过程:variable2=variable1例如:b=a修改变量b,变量a也会改变,所以称为别名:b[0]=8#a[0]也会变成82AliasesandshallowcopiesAliasesandshallow副本经常被混淆,上面描述的别名只是一个变量对变量的赋值,仅此而已。浅拷贝已经经过了一层复制,在这一层修改一个变量不会影响另一个变量。如下:b=a.copy()b[0]=8#此时修改b[0]不会影响a3==和isPython,一切都是对象,每个对象都有“三大部分”:数typevalue以此为基础,A==B比较对象A和B的值是否相等;AisB比较对象A和B的数量是否相等。记住这句话,也许你再也不会混淆这两个运算符了。4浅拷贝和深拷贝对象的嵌套次数是有限的,可以有很多层。浅拷贝只复制最外层;深拷贝复制所有层。a=[[3,1,2],[5,4,6]]浅拷贝是指修改b的第一层不会影响a,修改b的第二层会同步影响a,修改第二层如下图层影响afromcopyimportcopyIn[8]:b=copy(a)In[9]:b[0][0]=8In[10]:aOut[10]:[[8,1,2],[5,4,6]]In[11]:bOut[11]:[[8,1,2],[5,4,6]]深拷贝后,修改b的任意一层都不会影响a5的变量和Immutable还记得第3节中提到的每个对象的“大三块”吗?每个对象都有一个类型,当我们讨论可变和不可变时,我们实际上指的是类型。不可变类型常见:整数、字符串、浮点数、元组、冻结集合可变类型常见:列表、字典、集合不可变的意思是值不可修改,修改元组的值如下,会抛出TypeError异常,这是一个与类型密切相关的异常:a=(3,1)a[0]=10TypeError:'tuple'objectdoesnotsupportitemassignmentandvariablemeansthatvaluecanbemodified:In[14]:a=[3,1]In[15]:a[0]=10In[16]:aOut[16]:[10,1]