作家
登录

Python源码理解: +=和 xx = xx + xx的区别

作者: 来源: 2017-06-19 09:02:48 阅读 我要评论

, id(l) 
  •  
  • l = l + [3, 4] 
  •  
  • print 'l之后的id: ', id(l) 
  •  
  • # 输出 
  •  
  • l之前的id: 40270024 
  •  
  • l之后的id: 40389000 
  •  
  • ------------------------------------------ 
  •  
  • l = [1, 2] 
  •  
  • print 'l之前的id: ', id(l) 
  •  
  • l += [3, 4] # 列表的+被重载了, 阁下操作数必须都是iterable对象, 不然会报错 
  •  
  • print 'l之后的id: ', id(l) 
  •  
  • # 输出 
  •  
  • l之前的id: 40270024 
  •  
  • l之后的id: 40270024  
  • 看到结不雅了吗? 固然结不雅一样, 然则经由过程 id 的值表示, 运算前后, 第一种办法对象是不合的了, 而第二种照样同一个对象! 为什么会如许?

    结不雅分析

    1. [root@test1 ~]# cat 2.py  
    2. # coding: utf8 
    3. l = [1, 2] 
    4. l = l + [3, 4] 
    5. print l 
    6.  
    7.  
    8. l = [1, 2] 
    9. l += [3, 4]   
    10. print l 
    11. [root@test1 ~]# python -m dis 2.py  
    12.   2           0 LOAD_CONST               0 (1) 
    13.               3 LOAD_CONST               1 (2) 
    14.               6 BUILD_LIST               2 
    15.               9 STORE_NAME               0 (l) 
    16.  
    17.   3          12 LOAD_NAME                0 (l) 
    18.              15 LOAD_CONST               2 (3) 
    19.              18 LOAD_CONST               3 (4) 
    20.              21 BUILD_LIST               2 
    21.              24 BINARY_ADD           
    22.              25 STORE_NAME               0 (l) 
    23.  
    24.   4          28 LOAD_NAME                0 (l) 

        推荐阅读

        NAS存储市场杀入新军 安全易用是亮点

      【51CTO.com原创稿件】2017年6月14日,杰和科技在北京国度泅水中间为了其NAS办事器新品举办了以“谋势而>>>详细阅读


      本文标题:Python源码理解: +=和 xx = xx + xx的区别

      地址:http://www.17bianji.com/lsqh/35818.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)