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

Pycharm(六):可变与不可变类型

一、引用

在java中既有值传递,也有引用传递,我们思考一下在python中值的传递方式是哪种类型呢?

答案是引用传递

概述:

        Python中存储变量是需要占用内存空间的,为了更好地管理这些空间,每块空间都是有自己的地址值的。

格式:

        id(变量名/值)           可以查看变量/值在内存中的地址。

细节:

        Python中的 = 是引用传递,即:把等号右边的变量(值)地址值赋给  左边的变量。

记忆:

        1.可变和不可变类型的划分依据:

        在不改变地址值的情况下,其元素值是否可以发生改变;如果可以发生改变就是可变类型,不可以发生改变就是不可变类型。

        2.可变和不可变类型的具体划分如下:

        可变类型:列表,字典,集合;

        不可变类型:整型,浮点型,布尔类型,字符串类型,元组类型。

示例1.观察如下代码中在内存中有几个10

# 需求1: 观察如下的代码, 分析: 内存中到底有几个10.
a = 10
b = a
c = aprint(a, b, c)  # 10, 10, 10# 观察 a, b, c的地址值.
print(id(a))    # 140726997170904
print(id(b))    # 140726997170904
print(id(c))    # 140726997170904
print('-' * 30)

 运行结果:

根据结果,我们可以分析得出a,b,c三个变量都指向同一个地址,这个地址内存储的是10.

示例2.演示不可变类型修改值之后地址的变化

# 需求2: 演示 不可变类型.    整型
a = 100
print(f'变量a的内容: {a}')       # 100
print(f'变量a的地址: {id(a)}')   # 0x01, 140727005431320# 修改变量 a 的值.
a = 200
print(f'变量a的内容: {a}')       # 200
print(f'变量a的地址: {id(a)}')   # 0x02, 140727005434520
print('-' * 30)

运行结果:

可以看出,对于不可变类型,修改值之后会地址值会发生改变,变量a原来指向100对应的地址,修改值之后,地址对应也发生改变,指向200对应的地址。

示例3.演示

http://www.xdnf.cn/news/1921.html

相关文章:

  • 【时时三省】(C语言基础)循环程序举例
  • 手把手搭建AIGC应用:从图像生成到智能写作全实战
  • 使用 n8n 实现你的第一个爬虫程序:从零到自动化
  • 【金仓数据库征文】- 金融HTAP实战:KingbaseES实时风控与毫秒级分析一体化架构
  • 飞牛 NAS 整机要来了?!
  • C#高级语法--接口
  • 初识HashMap
  • 华为L410上制作内网镜像模板:在客户端配置模板内容
  • 施工配电箱巡检二维码应用
  • 【EDA】EDA中聚类(Clustering)和划分(Partitioning)
  • STM32F103C8T6信息
  • 【金仓数据库征文】-不懂数据库也能看懂!一文解析金仓技术介绍以典型应用
  • 力扣-206.反转链表
  • 2025最新版扣子(Coze)AI智能体应用指南
  • 118. 杨辉三角
  • c++——内部类
  • AI 开发入门之 RAG 技术
  • 解析Mqtt 消息服务质量Qos
  • 2025最新软件测试面试八股文(答案+文档+视频讲解)
  • linux 桌面环境
  • 如何用大模型技术重塑物流供应链
  • 【C++基础知识】C++类型特征组合:`disjunction_v` 和 `conjunction_v` 深度解析
  • linux centOS7.9 No package docker-ce available
  • 解决 Windows10 下 UWP 应用无法使用本地代理
  • Python实现技能记录系统
  • 建筑安全员考试科目有哪些
  • 从梯度消失到百层网络:ResNet 是如何改变深度学习成为经典的?
  • 三维扫描|用高精度3D数据驱动制造企业降本增效
  • 循环神经网络RNN(示例代码LSTM预测股价示例)
  • 【硬核干货】SonarQube安全功能