今天的目录是

1.小数据池

2.深浅copy

正文开始

1.小数据池

在说明今天的内容前,先说明一个在今天重复用到的一个知识点

###比较’=’俩边的数据是否完全相同,以及判断一个对象的内存地址是否完全相同###

#今天的内容深入研究还是很难再短时间内讲清楚,今天只是浅浅的讲一下

1.1#is判断等号俩边的数据是否相等

#id判断一个对象的内存地址是否完全相同

name ='alex'
name1 ='alex1'
print(id(name))
print(id(name1))
print(name is name1)
#结果
2434239272024
2434240176512
False

可以明显的看到俩个name的值虽然相同,可是俩者在内存中的地址是完全不同的

1.2 python中的俩种优化机制

1.2.1 代码块

代码块:代码全部都是基于代码块去实现的(好比一个学校给一个班级下发命令),一个文件就是一个代码块,不同的文件就是不同的代码块

终端:对于终端,例如pc中的cmd执行python,一行就是一个代码块

代码块的缓存机制:

python在执行同一个代码块的初始化对象的命令时,会检查是否其值是否已经存在,如果存在,会将其重用

换一句话说:在执行同一个代码块的时候,遇到新的变量,会将初始化的这个变量与值存储在一个字典中,遇到新的变量,会先从字典中查询记录,如果有重复的值则重复利用

注意:机制只能在同一个代码块下才能实现,满足此机制的数据类型有:int str bool

优点:
1.节省内存

2.提升性能

1.2.2 小数据池

小数据池:又叫驻留机制,驻村机制,字符串的驻存机制,字符串的缓存机制等等,主要是用于不同代码块的优化

适应的数据类型:str bool int

int:-5~256

str:一定条件下的str满足小数据池

bool值全部

优点:

1.节省内存

2.提升性能

总结:如果在同一个代码块中,用同一个代码块中的缓存机制,如果在不同的代码块中,用小数据池

2.深浅copy

l1 =[1,2,3,4]
l2 = l1
l2.append(666)
print(l1,l2)
#结果
[1, 2, 3, 4, 666] [1, 2, 3, 4, 666]

2.1 浅copy

在内存中创建一个新的list(dict),但是新的列表中的元素还是与原列表共用一个

l1 =[1,2,3,4]
l2 = l1
l2.append(666)
print(l1,l2)
l1 = [1, 'alex', [11,22]]
l2 = l1.copy()
print(id(l1),id(l2))
l1.append(33)
print(l1,l2)
print(id(l1[0]))
print(id(l2[0]))
print(id(l1[-1]))
print(id(l2[-1]))
print(l1 is l2)
l1[-1].append(666)
print(l1)
print(l2)

图示如下

2.2 深copy

深copy会在内存中对原列表(dict)以及列表里面的可变的数据类型重新创建一份,而列表中不可变的数据类型还是沿用原来的。

import copy
l1 = [1, 'alex', [11,22]]
l2 = copy.deepcopy(l1)
# l1[0] = 1000
print(l1)
print(l2)
# print(id(l1))
print(id(l2))
print(id(l1[-1])) #
print(id(l2[-1])) #
print(id(l1[0]))
print(id(l2[0]))
l1[-1].append(666)
print(l1)
print(l2)

全切得到的列表是对原列表进行的浅copy

l1 = [1, 2, 3, [22,33]]
l2 = l1[:] # [::] #列表的全切
l1[-1].append(666)
print(l2)

图示如下

正常情况如下

在python内部机制优化后,对于int,str,元祖等不可变量继续沿用copy前的内存地址,对于列表字典等可变元素采用开辟新的空间

图示如下

day4-python基础-小数据池以及深浅copy浅讲的更多相关文章

  1. 6.Python初窥门径(小数据池,集合,深浅拷贝)

    Python(小数据池,集合,深浅拷贝) 一.小数据池 什么是小数据池 小数据池就是python中一种提高效率的方式,固定数据类型,使用同一个内存地址 小数据池 is和==的区别 == 判断等号俩边的 ...

  2. python的小数据池和深浅拷贝

    小数据池 一种数据缓存机制,也称驻留机制 在同一代码块,相同的值不会开辟新的内存 特殊字符除外 小数据池只针对:在控制台时! 数字 :-5到256间的整数会被缓存 布尔值:都会缓存8 字符串 小于等于 ...

  3. python基础--小数据池,代码块的最详细、深入剖析

    本文转至太白金星 一,id,is,== 在Python中,id是什么?id是内存地址,那就有人问了,什么是内存地址呢? 你只要创建一个数据(对象)那么都会在内存中开辟一个空间,将这个数据临时加在到内存 ...

  4. Python基础知识(六)------小数据池,集合,深浅拷贝

    Python基础知识(六)------小数据池,集合,深浅拷贝 一丶小数据池 什么是小数据池: ​ 小数据池就是python中一种提高效率的方式,固定数据类型使用同一个内存地址 代码块 : ​ 一个文 ...

  5. python基础知识四 小数据池,深浅拷贝,集合+菜中菜

    四.小数据池,深浅拷贝,集合+菜中菜 1小数据池 --缓存机制(驻留机制) ​ '==' 判断两边内容是否相等 ​ 'is' 基于内存地址进行判断是否相同 a = 10 b = 10 print(a ...

  6. Python 入门之代码块、小数据池 与 深浅拷贝

    Python 入门之代码块.小数据池 与 深浅拷贝 1.代码块 (1)一个py文件,一个函数,一个模块,终端中的每一行都是代码块 (代码块是防止我们频繁的开空间降低效率设计的,当我们定一个变量需要开辟 ...

  7. python之小数据池

    代码块 Python 程序 是由代码块构造的.块是一个python程序的文本,它是作为一个执行单元的. 代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块. 而作为交互方式输入的每个命令都是 ...

  8. python27期day06:小数据池、深浅拷贝、集合、作业题。

    0.pycharm是代码块.黑窗口是小数据池.如下图: 1.驻留机制(长得像的共用一个内存地址)分小数据池缓存机制:后期开发时能明确知道.为什么不能正常使用.把经常用的东西放入规则(黑窗口)里. 数字 ...

  9. python的小数据池

    一.什么是小数据池? 小数据池是一种缓存机制,也被称为驻留机制.各种编程语言中都有类似的东西(常量池.小数据池都是指得同一个内容). python自动将-5~256的整数.有一定规则的字符串.都放在一 ...

随机推荐

  1. VSCode入门----设置成中文

    将VScode设置成中文. 1.如下图,安装中文插件,点击左边后,输入chinese搜索,然后选择中文件简体进行安装. 2.按住Ctrl+Shift+P,然后输入 configure ,如下图,选择“ ...

  2. Java开发知识之Java的继承多态跟接口*

    Java开发知识之Java的继承多态跟接口 一丶继承 1.继承的写法 在Java中继承的 关键字是 extends 代表一个类继承另一个类. 继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来 ...

  3. windows资源管理器多标签打开 windows文件夹多标签浏览 浏览器tab页面一样浏览文件夹 clover win8 win10 报错 无响应问题怎么解决 clover卡死 clover怎么换皮肤

    大家都知道,我们打开一堆文件夹的时候,是什么样子 “厚厚的一叠”图标堆叠在一起的,非常的不方便 那么,是不是可以像浏览器一样的tab页面展示呢? 答案是可以的 安装好就是这样子的 是不是方便漂亮了很多 ...

  4. 用TensorFlow教你手写字识别

    博主原文链接:用TensorFlow教你做手写字识别(准确率94.09%) 如需转载,请备注出处及链接,谢谢. 2012 年,Alex Krizhevsky, Geoff Hinton, and Il ...

  5. JDK动态代理深入理解分析并手写简易JDK动态代理(下)

    原文同步发表至个人博客[夜月归途] 原文链接:http://www.guitu18.com/se/java/2019-01-05/27.html 作者:夜月归途 出处:http://www.guitu ...

  6. 关于 vue 不能 watch 数组变化 和 对象变化的解决方案

    原文地址:关于 vue 不能 watch 数组变化 和 对象变化的解决方案 vue 监听数组和对象的变化 vue 监听数组 vue 实际上可以监听数组变化,比如: data () { return { ...

  7. 如何优雅的使用 Python 实现文件递归遍历

    今天有个脚本需要遍历获取某指定文件夹下面的所有文件,我记得很早前也实现过文件遍历和目录遍历的功能,于是找来看一看,嘿,不看不知道,看了吓一跳,原来之前我竟然用了这么搓的实现. 先发出来看看: def ...

  8. FastDfs集群docker化部署

    初识分布式文件系统FastDFS- 1.分布式与集群的区别 区别:集群是个物理形态,分布式是个工作方式.只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道:一个程序或系统,只要运行 ...

  9. netfilter及iptables基本概念

    网络访问控制 网络访问控制可以简单理解为防火墙,常用的网络访问控制有:哪些IP可以访问服务器, 可以使用哪些协议,哪些接口,是否需要对数据包进行修改等. netfilter netfilter是通过i ...

  10. iOS----------检测app进入后台或前台

    开发播放器的时候,经常需要检测app进入后台(暂停播放)或者进入前台(开始播放).方法非常简单. 1.检测app进入后台 // 在AppDelete实现该方法 - (void)applicationD ...