### 标准数据类型：

- Number（数字）
  - int
  - float
  - bool True: 1 False: 0
  - complex
  
- String（字符串）

- List（列表）写在方括号之间、用逗号分隔开的元素列表。列表中元素的类型可以不相同

- Tuple（元组）与列表类似，不同之处在于元组的元素不能修改。元组写在小括号里，元素之间用逗号隔开。

  元组中的元素类型也可以不相同

- Set（集合）一个无序不重复元素的集

- Dictionary（字典）是一种映射类型（mapping type），它是一个无序的键值对（key-value）集合。

  关键字（key）必须使用不可变类型，也就是说list和包含可变类型的 tuple 不能做关键字。

  在同一个字典中，关键字（key）必须互不相同

### 不可变数据（3 个）：

- Number（数字）
- String（字符串）
- Tuple（元组）

### 可变数据（3 个）

- List（列表）
- Dictionary（字典）
- Set（集合）

> 可变数据和不可变数据是相对于引用地址来说的。
>
> 不可变数据类型不允许变量的值发生变化，如果改变了变量的值，相当于新建了一个对象，而对于具有相同的值的对象，内部会有一个引用计数来记录有多少个变量引用了这个对象。
>
> 可变数据类型允许变量的值发生变化。对变量进行修改操作只会改变变量的值，不会新建对象，变量引用的地址也不会发生变化，不过对于相同的值的不同对象，在内存中则会存在不同的对象，即每个对象都有自己的地址，相当于内存中对于同值的对象保存了多份，不存在引用计数，是实实在在的对象。
>
> 简单地讲，可变数据和不可变数据的“变”是相对于引用地址来说的，不是不能改变其数据，而是改变数据的时候会不会改变变量的引用地址。

### 确定数据类型

- 使用 `type(变量名)`

### 字符串

- 自然字符串， 通过在字符串前加 r 或 R。 如 r"this is a line with \n" 则\n会显示，并不是换行

- Python 允许处理 unicode 字符串，加前缀 u 或 U， 如 u"this is an unicode string"

- 级联字符串，如"this " "is " "string"会被自动转换为this is string

  <img src="https://blog-heysq-1255479807.cos.ap-beijing.myqcloud.com/blog/note/image-20231201114240737.png" alt="image-20231201114240737" style="zoom: 50%;" />

- 字符串的截取的语法格式如下：变量 **[头下标: 尾下标: 步长]**