基于看到的两篇优秀的博主的文章,记录自己的理解

博文1:(16条消息) 【搬运】Python中等号赋值、copy、deepcopy的区别_leSerein_的博客-CSDN博客

博文2:(16条消息) python、pytorch中的常见的浅拷贝、深拷贝问题总结_新嬉皮士的博客-CSDN博客_pytorch 深拷贝

对于赋值“=”的理解,以小例子来说明,综合了上面的两篇博文,由于自己也是刚开始学习python,可能还会有诸多不对的地方,仅此记录自己的学习过程。

# Case1
a = [1,4,7]
print(id(a))
b = a
a = [2,3,5]
print(b)
print(id(a))
print(id(b))# Execution result:
# 2711345646592  the id of a
# [1,4,7]        the content of b
# 2711369626880  the id of a,这里的地址发生了变化,这是由于执行a=[2,3,5],a指向[2,3,5],获得对应#                            的存储地址,并更新了以前的地址.
# 2711345646592  the id of b, 这里b的地址还是指向2711345646592,而这个地址对应的存储内容[1,4,7]
#                            并没有在前面的操作中发生任何改变,因此b的内容还是2711345646592这个
#                            地址中的存储的[]

也就是说对于赋值操作,b = a 执行后,b的指针位置没有发生变化,并且该指针对应的内容也没有发生变化,所以b的值还是[1,4,7]。在这之后执行了a = [2,3,5],a被赋予了新的值,也就是a指向[2,3,5]这个数据对应的存储地址,并更新了以前的地址。

# Case2
a = [1,4,7]
print(a)
print(id(a))
b = a
print(id(b))
a[0],a[1],a[2] = 4, 5, 6
print(id(a))
print('b is :',b)
print(id(b))# Execution result:
# [1, 4, 7]
# 2711369432128
# 2711369432128
# 2711369432128
# b is : [4, 5, 6]
# 2711369432128

从运行结果可以看到这里的两个现象,(1)b的输出内容已经发生了改变;(2)a和b的地址始终没有发生变化。

对于这个a的地址没有发生变化,因为语句执行a[0],a[1],a[2] = 4,5,6只是改变了存储在a这个地址上对应的值,而没有改变他的id。

此时该id所在位置上存储的值发生了变化,而a和b都是指向这个id的,所以这种情况下,b的输出值也发生了变化。

现在再来看博文2中对‘赋值操作原理’的总结就比较好理解了:

“python中a = something 的赋值操作准确的应该理解为,给存储something建立一个索引a(即存储地址),a通过访问something的存储内容,获得something的值。”

python中赋值“=”的理解相关推荐

  1. Python中赋值、浅拷贝、深拷贝

    一.赋值 Python中赋值就是对对象的简单引用,这一点与C++不同,如下: a = [1, '123', [12, 'C']] b = a 在上述情况下,a和b是一样的,他们指向同一片内存,b不过是 ...

  2. python中result的用法_关于Python中的列表理解及用法

    在Python中,列表理解通常用于编写单行语句,这些语句通过可迭代对象进行迭代以创建新的列表或字典.本文首先介绍for循环如何在Python中工作,然后解释如何在Python中使用列表理解. Pyth ...

  3. python中raw是什么意思_对于Python中RawString的理解

    对于Python中RawString的理解 发布于 2016-01-11 06:56:27 | 100 次阅读 | 评论: 0 | 来源: PHPERZ Python编程语言Python 是一种面向对 ...

  4. 对python中axis的理解

    对 p y t h o n 中 a x i s 的 理 解 对python中axis的理解 对python中axis的理解 axis的实际含义是根据axis指定的维度进行连接,如矩阵m1的维度为(2, ...

  5. python中元组_理解python中的元组

    理解 python 中的元组 引言 在 Python 中元组是这样的: 元组是是这样一种数据结构:不变的或者不可改变的(简单来说不能重新赋值) .元素的有序序列.因为元组是 不变的,所以他的数值是不能 ...

  6. python中赋值不正确的_python中的“赋值与深浅拷贝”

    Python中,赋值与拷贝(深/浅拷贝)之间是有差异的,这主要源于数据在内存中的存放问题,本文将对此加以探讨. 1 赋值(添加名字) 赋值不会改变内存中数据存放状态,比如在内存中存在一个名为data的 ...

  7. python中的列表理解_掌握『Python列表理解』需要知道的9件事,你知道了吗?

    越来越多的人开始学习Python,它已经成为最流行的编程语言之一,这几乎发生在所有领域.比如网络开发.科学计算,当然还有人工智能. 无论想用python干什么,都绕不开学习Python的数据结构.变量 ...

  8. python yield理解_对Python中Yield的理解

    看到下面这段程序的时候,有点不明白这个yield到底是个啥东西,看了网上很多的博客,大致理解了yield的含义,所以记录下来. 要说yield首先要说python中的生成器,那么什么是生成器? 假设有 ...

  9. python中赋值不正确的_python中关于赋值、浅拷贝与深拷贝的问题

    Python中关于对象复制有三种类型的使用方式,赋值.浅拷贝与深拷贝.他们既有区别又有联系,刚好最近碰到这一类的问题,研究下. 一.赋值 在python中,对象的赋值就是简单的对象引用,这点和C++不 ...

最新文章

  1. 王者荣耀10连胜,竟然也有人不相信,猎游大神带菜鸡玩家10连胜
  2. 【渝粤教育】国家开放大学2019年春季 776员工招聘与管理 参考试题
  3. 华为薪资等级结构表_华为21级程序员月薪曝光:月薪27w,什么概念!程序员中的战斗机...
  4. 销售软件服务器设置,销售软件服务器
  5. C++11新特性之auto关键字的使用
  6. 【原创翻译】文本编辑器
  7. 企业如何培养新型员工队伍
  8. 三天打鱼两天晒网(入门级算法)(C语言)
  9. 银行排队问题(详解队列)
  10. 分数加减法—两个分数的加减法
  11. c语言逻辑运算符组合,C语言的逻辑运算符
  12. MySQL中临时表(TEMPORARY)
  13. 耦合度如何降低耦合度
  14. 高阶篇:4.1.2.2)产品部件级别的QFDII
  15. 服务器系统才有卷影副本吗,windows server 2019没有适合具有卷影副本的卷
  16. 博士申请 | 香港大学赵恒爽老师招收CV/ML/AI方向全奖博士/博后/RA
  17. hihocoder 1041
  18. 2017-2018-1 20162316刘诚昊 实验三 查找与排序
  19. python中的mat的操作
  20. 基于Navicat管理工具实现以客户为导向的数据库基本操作

热门文章

  1. 内部表与外部表——头歌
  2. 《思维导图的三招十八式》读书笔记
  3. C++程序设计(第3版 谭浩强) 第四章习题
  4. 字节跳动 前端校招 一二三面+hr面(2020-03)
  5. 信号完整性分析学习--18--源端匹配
  6. 低代码发展系列专访之三:低代码平台会成为企业数字化基础设施么?
  7. 关于[No mapping found for HTTP request with URI]的问题解决方法
  8. php项目css加载失败,css加载失败如何解决
  9. Java制作报表系统流程_finereport报表制作详细过程
  10. 使用手机摄像头做网络ip摄像头 并用opencv获取rtsp视频流