动态类型简介
在python中,类型是在运行过程中自动决定的,而不是通过代码声明。这意味着没有必要事先声明变量。
1.变量、对象和引用
对于 a = 3
python将会执行三个不同的步骤去完成这个请求。
(1)创建一个对象来代表值3
(2)创建一个变量a,如果它没有创建的话。
(3)将变量与新的对象3相连接。(引用)
以具体的术语来说:
(1)变量是一个系统表的元素,拥有指向对象的连接的空间。
(2)对象是被分配的一块内存,有足够的空间去表现它们所代表的值
(3)引用是自动形成的从变量到对象的指针。
2.类型属于对象,而不是变量
python的变量就是在特定的时间引用了一个特定的对象。
对象有两个标准的头部信息:(1)类型标志符。去标记这个对象的类型(2)引用计数器。用来决定是不是可以回收这个对象。
3.对象的垃圾收集
python是通过保持用每个对象中的计数器记录引用指到这个对象上的次数来完成这一功能。一旦这个计数器被设置为0,这个对象的内存空间就会自动回收。
下面看看关于共享引用的几个题目:
(1)A = "spam" B = A B = "shrubbery"
A的值不会被改变。
(2)A = ["spam"] B = A B[0] = "shrubbery"
A的值会被改变
(3)A = ["spam"] B = A[:] B[0] = "shrubbery"
A的值不会被改变
1.变量、对象和引用
对于 a = 3
python将会执行三个不同的步骤去完成这个请求。
(1)创建一个对象来代表值3
(2)创建一个变量a,如果它没有创建的话。
(3)将变量与新的对象3相连接。(引用)
以具体的术语来说:
(1)变量是一个系统表的元素,拥有指向对象的连接的空间。
(2)对象是被分配的一块内存,有足够的空间去表现它们所代表的值
(3)引用是自动形成的从变量到对象的指针。
2.类型属于对象,而不是变量
python的变量就是在特定的时间引用了一个特定的对象。
对象有两个标准的头部信息:(1)类型标志符。去标记这个对象的类型(2)引用计数器。用来决定是不是可以回收这个对象。
3.对象的垃圾收集
python是通过保持用每个对象中的计数器记录引用指到这个对象上的次数来完成这一功能。一旦这个计数器被设置为0,这个对象的内存空间就会自动回收。
下面看看关于共享引用的几个题目:
(1)A = "spam" B = A B = "shrubbery"
A的值不会被改变。
(2)A = ["spam"] B = A B[0] = "shrubbery"
A的值会被改变
(3)A = ["spam"] B = A[:] B[0] = "shrubbery"
A的值不会被改变