写在前面:
由于之前有一定的编程基础,所以对python也有一定的理解,所以这篇博客并不是完全按照给的框架来写的,临时有点事,所以后期写的有点粗糙,请见谅,希望后期有时间来优化。
文章目录
一. 变量和对象
在Python中一切都是对象,变量总是存放对象引用。当没有变量指向对象时,这个对象便进入了垃圾收集过程。Python的“动态类型”机制,负责检查变量的对象引用适用操作。如果该对象不适用该操作,则会直接报错。一句话变量无类型,对象有类型
1.变量和对象
Python中一切都是对象,赋值的作用就是让变量指针指向某个对象,也就是说变量中存放的对象的引用,而对象的引用是指向这个对象。
我的理解就是对象就是其他静态语言中说的变量的内容,也就是实际占用内存空间的一些东西,python中所有东西都是占有内存空间的,也可以理解为所有出现的东西都是具有实际作用的,不像指针的作用就是找到某个具体的东西,也就是摒除了指针这种东西(指针也要占用内存空间的),这也是python的简化之处,其中变量就是对象的引用(总要有一个东西来帮忙找到具体东西所在的内存位置,没有指针就只能用引用了),通俗的来理解引用就是“标签”,或者说是“导向牌”,理解为实际东西的内存地址,标签是可以改变的,今天是A的标签,明天也可是B的标签。
python 中,类型属于对象,变量是没有类型的
a = [1,2,3]
a = 'aha'
[1,2,3] 是 List 类型,“aha” 是 String 类型,而变量 a 是没有类型,她仅仅是一个对象的引用(一个指针),可以是指向 List 类型对象,也可以是指向 String 类型对象。
2.python中的赋值“=”
x = "blue"
y="green"
z=x
python执行第一句时,在heap中首先创建str对象,其文本内容为blue,同时还创建变量名为x的对象引用,x引用的就是这个str对象;
第二句类似,创建变量y指向str对象;第三句创建变量z的新对象引用,并将其指向对象引用x指向的相同对象。
所以Python中赋值操作符号“=”的作用是,将对象引用和内存中的某个对象进行绑定。如果对象已经存在,就进行简单的重新绑定,以便引用“=”右边的对象;如果对象引用尚未存在,就首先创建对象,然后将对象引用和对象进行绑定。这很类似与c中的指针的概念。
通俗来说就是Python中”=“:等号两边一个是变量,一个是对象,就把变量和对象进行绑定,两边都是变量的话就是这两个变量都指向同一个对象,都和同一个对象进行绑定。
>>> list_a = [1,2,3,'x','y']
>>>> list_b = list_a
>>> list_b
[1, 2, 3, 'x', 'y']
修改一下list_b中的值,然后分别查看list_b和list_a列表的值
>>> list_b[2]