004.Python基础语法_数据类型

在这里插入图片描述

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 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 (假)
Listlist列表类型
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解释器才是最终的运行环境
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失心疯_2023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值