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

Python---引用变量与可变、非可变类型

引用变量

在大多数编程语言中,值的传递通常可以分为两种形式“  值 传递  与  引用 传递”,但是在Python中变量的传递基本上都是引用传递

变量在内存底层的存储形式

a = 10

第一步:首先在计算机内存中创建一个数值10(占用一块内存空间)

第二步:在栈空间中声明一个变量,如a

第三步:把数值10的内存地址赋予给变量小a,形成所谓的“引用关系”

验证Python中变量的引用关系

可以使用内置方法id(),其参数就是要显示的变量信息 => id(变量名称)


a = 10
print(id(a))


把一个变量赋予给另外一个变量的影响


a = 10
b = a
print(id(a))
print(id(b))

运行结果:

说明:由以上运行结果可知,当我们把一个变量赋予给另外一个变量时,其两者指向的内存地址相同。就说明a和b指向了同一块内存空间,原理图如下:

思考:如果在b = a以后,我们改变了变量a的值,问变量b是否会受到影响?


# a = 10
# print(id(a))

a = 10
b = a

a = 100
print(b)  # 10 或 100

print(id(a))
print(id(b))

原理图:

总结:不可变数据类型(数值)在赋值以后,其中一个值的改变不影响另外一个变量,因为两者指向空间地址不同。


http://www.kler.cn/a/147328.html

相关文章:

  • [Android]相关属性功能的裁剪
  • WP网站如何增加文章/页面的自定义模板
  • 高级计算机算法的8道题(贪心、动态规划)
  • C++中 ,new int(10),new int(),new int[10],new int[10]()
  • 全面解读 USB Key:定义、使用场景、加密技术及 Java 实现
  • Ubuntu20.04 解决一段时间后键盘卡死的问题 ubuntu
  • Ubuntu 22.03 LTS 安装deepin-terminal 实现 终端 分屏
  • 笔记二十一、使用路由search进行传递参数
  • pandas教程:时区计数 USA.gov Data from Bitly USA.gov数据集
  • 反爬虫机制与反爬虫技术(二)
  • 【ISP】噪声--sensor(2)
  • DS二叉树--赫夫曼树解码/最优二叉树【数据结构】
  • acwing算法基础之动态规划--背包问题
  • 【服务器能干什么】搭建一个短网址平台,可以查看数据详情!
  • Java的buffer.flip()是个什么东西?
  • XML Schema中的attributeFormDefault
  • el-row el-col书写不规范的问题,会换行
  • 奖学金问题
  • Ansible的module_defaults
  • 深兰科技“汉境”入选2023年湖北省人工智能十大优秀应用案例
  • 实时云渲染简要分析
  • Python爬虫入门课: 如何实现数据抓取 <文字 图片 音频 视频 文档..>
  • 通过JDBC连接MySQL实现表的插入和查看语句
  • IDEA断点调试
  • 双通道 12V 直流电机驱动芯片GC8548,12V,大电流,具有短地短电源保护功能,可替代LV8548/LV8549/ONSEMI
  • 浙江启用无人机巡山护林模式,火灾扑救效率高