主要讲述了变量和对象是如何关联在一起的。变量就是对象的名字而已。
在python中,内存中储存的是对象。
变量(名)引用对象,变量只是对象对外的标签或者地址。
动态类型:python自动为我们跟踪对象的类型,不需要我们在脚本中编写声明语句
- 对象才讲类型,变量没有类型
对象有两个头部信息,一个是类型标志符,另一个是引用计数器 - 当对一个变量重新赋值时,之前所指向的对象就被garbage collection
共享引用
概念:多个变量名共同引用一个对象
总结:
- 给其中一个变量赋一个新的值,并不是替换了原始的对象,而是让这个变量去引用完全不同的一个对象。不会改变引用原来的对象的其他变量。
- 但是对于可变对象进行原处修改,会改变这个变量,改变对象。
- 其中一个变量是另一个变量的copy时,改变其中一个的值,不会改变另外一个的值。(list[:]其实是copy)
a = 4
b = a
a = 'spam'
print(b)–>4
改变a不会改变b, 因为b所指向的对象没有变,b并不是指向变量名a.
- 复制一个字典或集合应该使用X.copy()方法调用。List 也可以用[:]表达copy,这样b只是a的copy,改变b并不会改变a.如果b=a,则,a b指向同一个对象,修改b的对象也就是修改a的对象。
- 值相等的两个对象,a is b 可能返回True 也可能返回 False.