《Python学习》 第二部分 类型与操作(三)

来源:互联网 发布:淘宝库客运动正吗 编辑:程序博客网 时间:2024/05/26 02:19

第六章 动态类型

一、没有声明语句的情况

在Python中,类型是在程序运行状态中决定的,不是由代码的声明决定。

1、变量,对象和引用

(1)变量本身没有类型,在初次赋值是创建,必须在使用前赋值

(2)变量包含了一个对象的引用,每当变量出现在表达式中的时候,引用的对象会自动代替变量

2、对象有类型,变量没有

3、对象的垃圾自动回收机制:当一个对象在程序的剩余部分不被使用时,该对象将会自动被回收删除


二、共享引用

1、共享引用:在Python中,变量总是指向对象的指针,而不是可变存储区域的标签。给对象赋一个新的值,实际上是改变了变量的指针指向一个全新的对象。     

2、共享引用和位置变换

>>> L1 = [2, 3, 4]     # 一个可变的对象
>>> L2 = L1             # 指向同一个对象
>>> L1[0] = 24         #  位置变换
>>> L1                      #  L1变了
[24, 3, 4]
>>> L2                      # L2也变了!

[24, 3, 4]

位置变换L1[0] = 24实际上改变了列表对象,而L1和L2的指向并没有改变,因此,L2也变了。

3、共享引用与相等性: == 判断两个变量的值是否相等, is 判断两个变量的引用是否相同

>>> L = [1, 2, 3]
>>> M = L               # M和L指向同一个对象
>>> L == M            # 有相同的值
True
>>> L is M             # 指向的是同一个对象
True
>>> L = [1, 2, 3]
>>> M = [1, 2, 3]    # M和L指向不同的变量
>>> L == M            # 值相等
True
>>> L is M             # 但是它们是不同的变量

False


三、动态类型到处都是

1、因为Python中到处都是赋值和引用,所以对动态类型的一点基本掌握在很多情况下都是有益的。

2、在实践层面,动态类型意味着可以少写一些代码。



原创粉丝点击