当前位置: 首页 > news >正文

python之数据类型之可变与不可变类型

数据类型之可变与不可变类型

文章目录

  • 数据类型之可变与不可变类型
    • 一.可变类型
      • 1.什么是可变类型
      • 2.可变类型有哪些
      • 3.示例
    • 二.不可变类型
      • 1.什么是不可变类型
      • 2.不可变类型有哪些
      • 3.示例

一.可变类型

1.什么是可变类型

  • 在值改变的情况下, 内存地址(ID)不变, 证明改变的是原值
  • 即可变类型—>也叫不可 hash 类型

2.可变类型有哪些

  • 列表 : list
  • 字典 : dict

3.示例

  • 列表 list
?修改前
li = ['aaa', 'bbb', 'ccc']
print(li)      # ['aaa', 'bbb', 'ccc']
print(id(li))  # 1534124489600

?修改后
li[0] = 'AAA'
print(li)      # ['AAA', 'bbb', 'ccc']
print(id(li))  # 1534124489600
  • 字典 dict

ps : 字典的数据结构是 key:value形式的键值对, 我们说字典可变通常是说值(valve)可变, 而 key 表示的是描述信息, 是不可变的, 并且只可以是任意类型

?修改前
dic = {'int':100 , 'str': 'aaa', 'bool': True , 'float':3.14 }
print(dic)      # {'int':100 , 'str': 'aaa', 'bool': True , 'float':3.14 }
print(id(dic))  # 1460220808552

?修改后
dic["int"] = 66
print(dic)      # {'int':66 , 'str': 'aaa', 'bool': True , 'float':3.14 }
print(id(dic))  # 1460220808552

二.不可变类型

1.什么是不可变类型

  • 在值改变的情况下, 内存地址也改变了, 证明这改变的值是产生的新值
  • 即原值不可变—>也叫可 hash 类型
  • 他们都是一个不可分割的整体

2.不可变类型有哪些

  • 整形 : int
  • 浮点型 : float
  • 字符串 : str

3.示例

  • 整形 int
?修改前
x = 10
print(id(x))  # 140715012507584

?修改后,下面使用了变量赋值、以及增量赋值2种修改方式
x = 20
print(id(x))  # 140715012507904
x += 20
print(id(x))  # 140715012508544
  • 浮点型 float
? 修改前
x = 10.3
print(id(x))  # 1818265421872
x = 20.3

?修改后,下面使用了变量赋值、以及增量赋值2种修改方式
print(id(x))  # 1818264232976
x += 20.3
print(id(x))  # 1818265422256
  • 字符串 str
?修改前
x = 'aaa'
print(id(x))  # 1614906980528

?修改后
x = 'AAA'
print(id(x))  # 1614906972400
  • 布尔值 bool
?修改前
x = True
print(id(x))  # 140715012228944

?修改后
x = False
print(id(x))  # 140715012228976

相关文章:

  • python流程控制之for循环
  • python流程控制之while循环
  • Python语法入门之流程控制if判断
  • IDE集成开发环境的基本使用
  • Python实战演练:ATM + 购物车项目开发
  • 博客搬家通告!
  • python之深浅copy
  • python小数据池,代码块的深入剖析
  • 软件开发的目录规范
  • Linux前身今世
  • linux操作系统虚拟机安装
  • python之数字类型内置方法
  • python之字符串类型内置方法
  • python之列表类型内置方法
  • python之元组类型内置方法
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • bootstrap创建登录注册页面
  • Javascripit类型转换比较那点事儿,双等号(==)
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • JS基础之数据类型、对象、原型、原型链、继承
  • Laravel5.4 Queues队列学习
  • Next.js之基础概念(二)
  • Swift 中的尾递归和蹦床
  • Vue.js 移动端适配之 vw 解决方案
  • 关于for循环的简单归纳
  • 猴子数据域名防封接口降低小说被封的风险
  • 记一次和乔布斯合作最难忘的经历
  • 前端面试总结(at, md)
  • 浅谈Golang中select的用法
  • 手写双向链表LinkedList的几个常用功能
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 一份游戏开发学习路线
  • 译米田引理
  • 正则与JS中的正则
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #pragma预处理命令
  • %@ page import=%的用法
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (第27天)Oracle 数据泵转换分区表
  • (二)正点原子I.MX6ULL u-boot移植
  • (三)Honghu Cloud云架构一定时调度平台
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)iOS字体
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .bat批处理出现中文乱码的情况
  • .mysql secret在哪_MySQL如何使用索引
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .Net6使用WebSocket与前端进行通信
  • .Net中ListT 泛型转成DataTable、DataSet
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504