python 一些基础知识

Python 注释的原理:

  原理:根据对象的引用计数器,对象创建会给对象一个引用计数器属性。如果该属性的值为0,那么该对象会被释放。创建一个字符串对象,但是没有任何引用,计数器为0。

Python小整数对象:

  
  python为了优化速度,使用了小整数对象池,避免整数频繁申请和销毁内存空间。

  python对小整数定义是[-5,256] 这些整数对象提前建立,不会被垃圾回收。在python中这个范围python整数使用的都是同一个对象

  定义两个相同的字符串时:引用计数器为0,触发垃圾回收

  小结:

    1、小整数共用对象,常住内存。

    2、单个字符共用对象,常住内存

    3、单个单词,不可修改,默认开启intern机制,共用对象,引用计数为0,则销毁

    4、字符串(包含空格),不可修改,没有开启intern机制,不共用对象,引用计数为0,销毁。

 python深浅拷贝:

   1、用“=”赋值:

   “=”赋值存会把存放变量a的地址值传给被被赋值b,最后两个变量引用同一个地址。

  

  对于可变变量来说其中一个变量a的值改变,另一个变量b也会随着改变,但是id不会变:

  

  注释:他们是连体婴儿,你有的我全要,完完全全不分彼此。

  对于不可变变量来说,变量a改变,另一个变量b,不会改变:

  

 注释:连体婴儿,第三者出现,就变成两个人分家了。

   2、浅拷贝copy.copy:

  变量 l1 通过copy()拷贝给变量 l2,地址改变。并且使用copy改变第一层以外的元素,两个变量都会改变;改变第一层变量,改变的变量会发生改变:

  

  拷贝后,改变的列表第二层深层元素,所以l1和l2都改变,但是第二次改变第一层元素,只有l1发生改变。

  注释:他们是两个人长得一样,在房子一楼的时候装作互相不认识,在房子楼上时就不分彼此,搞到一起了。

  3、深拷贝copy.deepcopy():

  数据完完全全不共享,数据之间不会影响,内存完全独立。

  

  注释:两个人长得一样,老死不相往来。

  小结:

  

    1,深浅拷贝都是对源对象的复制,占用不同的内存空间。

    2,不可变类型的对象,对于深浅拷贝毫无影响,最终的地址值和值都是相等的。

    3,可变类型: 
      =浅拷贝: 值相等,地址相等 
      copy浅拷贝:值相等,地址不相等 
      deepcopy深拷贝:值相等,地址不相等

 ———————————————————————————————————————————————————————————

                                      如果有说的不对的,希望大家提出来,万分感谢。

posted @ 2018-08-27 20:17  月光男神  阅读(336)  评论(0编辑  收藏  举报