Python基础学习笔记(五)

一 常量池(小数据池)

二 解码和编码

三 基础数据补充

四 set集合

五 深浅拷贝

一 常量池(小数据池)

  ⼩数据池: ⼀种数据缓存机制.也被称为驻留机制.各⼤编程语⾔中都有类似的东⻄.在⽹上搜索常量池,⼩数据池指的都是同⼀个内容.

  ⼩数据池只针对: 整数,字符串,布尔值.其他的数据类型不存在驻留机制

  在python中对-5到256之间的整数会被驻留在内存中. 将⼀定规则的字符串缓存. 在使⽤的时候, 内存中只会创建⼀个该数据的对象. 保存在⼩数据池中. 当使⽤的时候直接从⼩数据池中获取对象的内存引⽤. ⽽不需要创建⼀个新的数据. 这样会节省更多的内存区域.

  优点: 能够提⾼⼀些字符串, 整数的处理速度. 省略的创建对象的过程.
  缺点: 在'池'中创建或者插入新的内容会花费更多的时间.

  对于数字: -5~256是会被加到⼩数据池中的. 每次使⽤都是同⼀个对象.

  对于字符串:    

    1. 如果字符串的⻓度是0或者1, 都会默认进⾏缓存

    2. 字符串⻓度⼤于1, 但是字符串中只包含字⺟, 数字, 下划线时才会缓存    

    3. ⽤乘法的到的字符串.

      ①. 乘数为1, 仅包含数字, 字⺟, 下划线时会被缓存. 如果包含其他字符, ⽽⻓度<=1 也会被驻存,

      ②. 乘数⼤于1 . 仅包含数字, 字⺟, 下划线这个时候会被缓存. 但字符串⻓度不能⼤于20

    4. 指定驻留. 我们可以通过sys模块中的intern()函数来指定要驻留的内容. 

  PS:在代码块内的缓存机制是不⼀样的. 查是否其值是否已经存在, 如果存在, 会将其重⽤. 换句话说: 执⾏同⼀个代码块时, 遇到初始化对象的命令时,他会将初始化的这个变量与值存储在⼀个字典中, 在遇到新的变量时, 会先在字典中查询记录, 如果有同样的记录那么它会重复使⽤这个字典中的之前的这个值.

二 解码和编码

  在Python3的内存中,在程序运行阶段,使用的是Unicode编码,因为Unicode是万国码.什么内容都可以显示.但在数据传输和存储的时候由于Unicode比较浪费空间和资源,需要把Unicode转化成UTF-8来进行储存.

  把文字转化成bytes形式叫编码:encode

  把bytes转化成Unicode/UTF-8/GBK等形式叫解码:decode

三 基础数据补充

  join()  把列表中的数据进行拼接。 拼接成字符串

  删除列表常见问题:由于删除元素会导致元素的索引改变, 所以容易出现问题. 尽量不要再循环中直接去删除元素. 可以把要删除的元素添加到另⼀个集合中然后再批量删除.

  dict.fromkeys(iter, value)  把可迭代对象进行迭代。 和后面的value组合成键值对 返回新字典

  PS:返回新字典。不会改变原来的字典

    字典中的所有的value都是同一个列表(指向同一内存地址)

四 set集合

  set中的元素是不重复的.⽆序的.⾥⾯的元素必须是可hash的(int, str, tuple,bool), 可以这样来记. set就是dict类型的数据但是不保存value, 只保存key. set也⽤{}表⽰

  创建:a = set()

  添加set.add()  set.update()

  删除set.pop(),  set.remove()  set.clear()

  不支持修改

  查询 for循环打印查看

  冻结 frozenset{}  冻结后不可修改

五 深浅拷贝

  浅拷贝:只拷贝第一层内容,若第一层内容包含列表等嵌套内容,修改嵌套内容会导致同步修改

  深拷贝:把对象内容全部拷贝,修改无影响.  需import copy    a = copy.deepcopy(拷贝对象)

  作用:快速创建对象

原文地址:https://www.cnblogs.com/FelixTeng/p/9852290.html