1. 不可变的数据类型,不能赋值
Python3 中有六个标准的数据类型:、
- Number(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
Python3 的六个标准数据类型中:
- 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
- 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
2. is和==的区别
先下定论,
is
用于判断id()
是不是一样,即变量的内存地址是否一样。只要id()
相等,is
就返回true
==
用于判断value值是不是一样。只要value相等,==
就返回true
is
和==
的关联:
==
为true
不一定有is
为true
. 但is
为true
的前提必须有
==
为true
(即值相等,不一定id相等; id相等的前提是值相等)
x=1; y=1.0; z=1+0j
x==y;y==z;x==z#全部为true
x is y; x is z; x is y;#全部为false
print(id(x),id(y),id(z))#id互不相等
详解:
- 首先python中一切皆对象,Python中对象包含的3个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。
is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同。 - value且type相同时(让我们暂且保持最简单的赋值方式,generally有如下结论):
- id相同:str; [-5,256]之间的int. (注:python为了实现对内存的有效利用,对小整数[-5,256]内的整数会进行缓存,不在该范围内的则不会缓存,[-5,256]被称为小整数缓存池,这些数比较常用,因此内存固定)
x='123'
y='123'
x==y#true
x is y#true
print(id(x),id(y))