变量和数学里面的方程式变量是一样的,但在计算机编程语言里面,变量可以是任意数据类型。变量在程序中用一个变量名来表示。python的变量名定义规则如下:
1,可以是大小写的英文,数字,下划线的组合
2,不能以数字开头
3,规避系统关键字
赋值
和其它语言一样,使用“=”进行赋值。python是动态语言,声明变量无需声明其类型。python会根据所赋的值自动进行判断并定义类型。下面使用type(obj)来返回各个变量的类型来验证一下,如下图,根据顺序,所有数据类型一一对应:
常量
就是不能变的量,比如圆周率π,比如地心重力加速度g=9.8n/kg。Python通常用大写来表示:PI=3.14159265359。
不能变:圆周率,重力加速度是总结出来的一个数字,代表的是某一事物的某一特性,逻辑关系,不因你书写上改变而改变(比如重力加速度,除非你把地球炸了)
能变:本质上是一个变量,所以,你是可以任意改变的。但逻辑关系会随之改变,会影响结果。
深浅拷贝
声明一个变量,其实就是在内存中开辟一个空间,在这个空间里面存值。
如:a = "ab",就是在内存开辟一个空间来存放"ab".a是变量,并指向"ab",指向称之为索引。
b=a,只是赋值,此时a,b的内存地址是一样的,可以理解为b是a的别名。
c=b,如果只是包含值,c的改变不会影响a,b,使用浅拷贝即可;
但如果a包含了对象,如下面代码(b),使用浅拷贝,c的改变会影响a,b。而b的改变会影响b1
使用深拷贝就不会影响原对象指向的值。
总结:
1,浅拷贝只是声明一个新变量(内存空间)存储指向原对象的索引。新对象的改变会影响原对象。这种影响体现在对象中又引用了对象。如果只是值,则不会有影响。
2,深拷贝就是跑到对象的内存地址,通过递归的方式把对象一一复制过来,单独存储,跟原对象没有任何关系。新对象的改变不会影响原对象。
tips:如果你觉得不好理解文字,就多敲代码来理解,如上图。