我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈
虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈
PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈
Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈
优 质 资 源 下 载 :👉👉 资源下载合集 👈👈
数据类型描述
- 什么是数据类型?
- 对程序处理的数据进行的分类
- 比如:1,‘a’,…
为什么要区分数据类型
- 1、区分存储空间(系统会根据不同的数据类型分配不同的存储空间)
- 2、根据不同数据类型的特性,做不同的数据处理
# 比如 print(1 + 2) # 数字类型相加,直接计算 # 输出结果:3 print('1' + '2') # 字符串类型相加,拼接 # 输出结果:'12'
常用数据类型
- 数据类型分类
分类 | 类型 | 说明 | 备注 |
---|---|---|---|
Number(数值类型) | int | 整数型 | 二进制、八进制、十进制、十六进制 64位电脑(-2^63^~2^63-1^) |
float | 浮点数 | python中只能精确存储17位小数 | |
long | 长整型 | python没有限制长整型数值的大小 | |
complex | 复数型 | ||
String(字符类型) | str | 文本类型 | |
bytes | 字节类型 | 表示图片、视频等二进制格式的数据 | |
Bool(布尔类型) | bool | 布尔类型 | 主要用于逻辑判断,True(真) / False (假) |
List | list | 列表类型 | |
Set(集合类型) | set | 集合 | |
Tuple(元组类型) | tuple | 元组 | |
Dictory(字典类型) | dic | 字典 | |
NoneType(空类型) | None | 空值 |
- 不可变数据(四个)
Number(数字) String(字符串) Tuple(元组) Sets(集合)
- 可变数据(两个)
List(列表) Dictionary(字典) ···
- 查看数据类型
- 语法
- type(数值)
- 示例
print(type(1)) # 输出:<class 'int'> print(type('a') # 输出:<class 'str'>
数据类型转换
- 描述
- 将一种数据类型转换为另一种数据类型
- 为什么要进行数据转换
- Python语言是一种强类型语言,不同类型之间不能进行运算
- 语法
int(x [, base]) # 将x转换成一个整数 float(x) # 将x转换成一个浮点数 str(x) # 将x转换成一个字符串 repr(x) # 将x转换成一个表达式字符串 chr(x) # 将x转换成一个字符 unichr(x) # 将x转换成一个Unicode字符 ord(x) # 将x转换成对应的整数值 hex(x) # 将x转换成一个十六进制字符串 oct(x) # 将x转换成一个八进制字符串 eval(str) # 计算字符串中的有效表达式,并返回对象 tuple(s) # 将序列s转换成一个元组tuple list(s) # 将序列s转换成一个列表list
内容补充
- 动态类型/静态类型
- 静态类型:类型是编译的时候确定的(定义变量的时候指定了数据类型),后期无法修改
# c语言 int a = 10 # java语言 double d=0.23;
- 动态类型:类型是运行时进行判定的,可以动态修改
# python语言 a = 10 a = 'a'
- 静态类型:类型是编译的时候确定的(定义变量的时候指定了数据类型),后期无法修改
- 强类型/弱类型
- 强类型:类型比较强势,不轻易随着环境的边喝而变化
# python语言 a = '1' b = 2 print(a + b) # a是字符串类型,b是数值类型。当执行a+b时,会报错。 # a不会转换为数值类型,b也不会转换为字符串类型
- 弱类型:类型比较柔弱,不同的环境下,很容易被改变
- 总结
- Python是属于强类型的动态类型语言
小整数池的概念
-
python中,只要是赋值操作,产生新的值的时候,就会新申请一块内存空间。
-
只要申请了新的内存空间,它的内存地址和id就会不一样
-
那么,我们现在来测试一下
-
哦豁…从图中可以看到,我们做了两个赋值操作,按前面讲到的,两次赋值应该会申请两个不同内存空间,从而产生两个不同的内存地址和ID
-
但是图中可以看到变量a和变量b的id是一样的,难道,翻车了?
-
原因分析:
- 申请内存空间把值存进去,这就是一种写操作,也就是io操作(不管是往硬盘里读写数据还是往内存里读写数据都是io操作)
- cpu的运算速度相当快,比内存的读写速度快,比硬盘读写速度更快,所以一旦程序中有了io操作,就会拖慢cpu速度
- 所以python就帮我们做了一步优化——小整数池
- 小整数池:为了避免因创建相同的值而重复申请内存空间所带来的效率问题,python解释器会在启动的那一刻创建出小整数池,范围是 -5 ~ 256(也就是python解释器已启动就会申请一堆的内存空间,将这些数值存进去)
- 程序在用到这个范围内的数值的时候,就不会再申请新的内存空间,而这些小整数也永远不会被垃圾回收机制回收
- 如:
- 只要是出现了重复的数值(小整数池范围内),那么就不会重新申请内存空间,而是使用现成的。这样就提高了程序的运行效率
- python解释器不只有小整数池,还有一些常见的字符串(如:‘a’、‘b’、'c’等等)也做了同样的优化
- 在pyCharm中运行python时,pyCharm出狱对性能的考虑,会扩大小整数池的范围,其他字符串也包含在内,一起采用了相同的方式处理,所以pyCharm比较吃内存
- 所以会出现同一个字符在pyCharm中id是一致的,但是在python解释器中id却不一样。但是我们最终都是以python解释器为准,因为pycharm只是用来做开发的,python解释器才是最终的运行环境