直接看下面代码:

x +=y

In [66]: id(a)

Out[66]: 4476839480

In [67]: id(b)

Out[67]: 4476839480

In [68]: a = [1, 2, 3]

In [69]: b = a

In [70]: id(a)

Out[70]: 4477149984

In [71]: id(b)

Out[71]: 4477149984

In [72]: a += [4, 5, 6]

In [73]: a

Out[73]: [1, 2, 3, 4, 5, 6]

In [74]: b

Out[74]: [1, 2, 3, 4, 5, 6]

In [75]: id(a)

Out[75]: 4477149984

In [76]: id(b)

Out[76]: 4477149984

x = x + y

In [77]: a = [1, 2, 3]

In [78]: b = a

In [79]: id(a)

Out[79]: 4476686208

In [80]: id(b)

Out[80]: 4476686208

In [81]: a = a + [4, 5, 6]

In [82]: a

Out[82]: [1, 2, 3, 4, 5, 6]

In [83]: b

Out[83]: [1, 2, 3]

In [84]: id(a)

Out[84]: 4477187640

In [85]: id(b)

Out[85]: 4476686208

可以看出对于可变对象而言 x = x + y 这种形式已经改变了x的指向,而不是"inplace"的修改。

使用dis模块进行一下验证。

In [86]: def foo(x, y):

...:     x += y

...:     return x

...:

In [87]: def foo(x, y):

...:     x += y

...:

In [88]: def foo2(x, y):

...:     x = x + y

...:

In [89]: dis.dis(foo)

2           0 LOAD_FAST                0 (x)

3 LOAD_FAST                1 (y)

6 INPLACE_ADD

7 STORE_FAST               0 (x)

10 LOAD_CONST               0 (None)

13 RETURN_VALUE

In [90]: dis.dis(foo2)

2           0 LOAD_FAST                0 (x)

3 LOAD_FAST                1 (y)

6 BINARY_ADD

7 STORE_FAST               0 (x)

10 LOAD_CONST               0 (None)

13 RETURN_VALUE

可以看到字节码是不同的:

+= 对应 INPLACE_ADD

对应BINARY_ADD

注意以上仅适用于CPython实现。

python 中有x y y x吗_Python: x += y 与 x = x+y 的区别相关推荐

  1. python中有哪几种注释方式_python的注释有哪几种

    python的注释有哪几种?下面是方法汇总: 一.python单行注释符号(#) python中单行注释采用 #开头 示例:#this is a comment 二.批量.多行注释符号 多行注释是用三 ...

  2. y空间兑换代码_Python爬虫实战:QQ空间全自动点赞工具

    QQ空间自动点赞 前景提要目标确定分析介绍登陆获取cookie寻找XML寻找可变参数获取第一个空间动态寻找点赞所需的URL寻找可变参数功能提升到秒赞全部代码最后还是希望你们能给我点一波小小的关注.奉上 ...

  3. 萌新的Python练习实例100例(五)输入三个整数x,y,z,请把这三个数由小到大输出。

    题目: 输入三个整数x,y,z,请把这三个数由小到大输出. 分析1: 两个两个数字对比,然后改变他们的顺序 x > y x,y的顺序变更为y,x x > z x,z的顺序变更为z,x y ...

  4. python中有指针吗_Python中的指针——到底指什么(一)

    指针是C和C++系语言的重要概念,其本质是保存另一个变量内存地址的变量(Pointers are variables that hold the memory address of another v ...

  5. python中有数组吗_python中有数组吗

    首先,我们需要明确的一点就是Python是没有数组这一概念的,也正是基于这一特点我才打算撰写这篇文章,但是Python中有一种比数组还要厉害的东西--列表,它的功能比数组更加强大,所以把它称为&quo ...

  6. 【爆肝更新】Python基础教程:第五章_Python函数

    原创:公众号 数据说话 [爆肝更新]Python基础教程:第五章_Python函数 函数介绍 学习目标: 快速体验一下函数的使用 了解函数的作用. 函数:是组织好的,可重复使用的,用来实现特定功能的代 ...

  7. python中一共有多少个关键字-Python中有几个关键字

    Python中关键词有多少个?Python中关键词目前有31个,可以利用Python的内置的keyword模块进行输出查看. keyword模块 Help on module keyword: NAM ...

  8. python中的取余运算符是_python取余运算

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python中对负数求余的计算方法和求幂运算注意点python中对负数求余的计算 ...

  9. python filter map区别_python中filter、map、reduce的区别

    python中有一些非常有趣的函数,今天也来总结一下,不过该类的网上资料也相当多,也没多少干货,只是习惯性将一些容易遗忘的功能进行整理. lambda 为关键字.filter,map,reduce为内 ...

  10. python中列表是什么样的数据结构_Python中列表、字典、元组、集合数据结构整理...

    Python常见数据结构整理 Python中常见的数据结构可以统称为容器(container).序列(如列表和元组).映射(如字典)以及集合(set)是三类主要的容器. 一.序列(列表.元组和字符串) ...

最新文章

  1. MVC POST请求后执行javascript代码
  2. 1041 考试座位号 (15分)——17行代码AC
  3. JS事件及其兼容用法
  4. php布尔类型代码,PHP数据类型之布尔型的介绍
  5. scala 排序接口Ordering
  6. linux svn客户端通过 https访问windows VisualSVN Server Manager
  7. Android APK 签名问题
  8. 如何引入阿里矢量图标库彩色图标
  9. python蓝牙通信_python实现蓝牙通信
  10. 心电信号越界怎么回事_心电信号基础
  11. 「雷锋前线」迅雷的“星域CDN”能撼动市场吗?
  12. Python爬取《哆啦A梦-伴我同行2》影评,这部的寓意是啥?词云来剧透!
  13. 《Windows 8 权威指南》——1.2 Windows 8平板模式下IE浏览器网页
  14. ubuntu 配置 vino-server
  15. ORCAL数据库问题:日志文件损坏解决方案
  16. cmd正则表达式批量重命名
  17. html5 3d场景设计,打造H5里的“3D全景漫游”秘籍 - 腾讯ISUX
  18. html页面如何访问rtsp视频源
  19. 支付宝推“未来医院”是表象 支付宝服务窗才是最终目的
  20. B站与快手之间,还差了一个YY?

热门文章

  1. Spring Boot : ApplicationListner
  2. 【Flink】A Typical reason for AskTimeOutException is that the recipientactor
  3. 女生学计算机好还是工业工程好,工业工程专业排名-工业工程考证我是学IE大三的,我想问一下,工业工程,有哪些与专业 爱问知识人...
  4. ​【月报】Java知音的三月汇总
  5. 从Centos7升级到Centos8的教程(图文详解)
  6. Linux 文件与目录管理 | 菜鸟笔记收录
  7. JavaScript——原生js实现瀑布流
  8. pythrch 启动 visdom可视化
  9. sql 批量插入数据到Sqlserver中 效率较高的方法
  10. 《DSP using MATLAB》示例Example4.6