Python 入门之代码块、小数据池 与 深浅拷贝
Python 入门之代码块、小数据池 与 深浅拷贝
1、代码块
(1)一个py文件,一个函数,一个模块,终端中的每一行都是代码块
(代码块是防止我们频繁的开空间降低效率设计的,当我们定一个变量需要开辟空间的时候,它会先去检测我们定义的这个值在空间中有没有进行开辟,如果没有开辟就开辟一个空间,如果内存中开辟过就使用同一个)。
(2)整型(int) : -5 ~ 正无穷
a = -6
b = -6
print(a is b)
a = 1000
b = 1000
print(id(a),id(b))
print(a is b)
(3)字符串(str) :
<1> 定义字符串的时候可以是任意的
a = "asdfasdfa22143df21af啊发生的vuwqtavuiqf!54人24215124"
b = "asdfasdfa22143df21af啊发生的vuwqtavuiqf!54人24215124"
print(a == b)
print(a is b)
<2> 字符串(字母,数字)进行乘法时总长不超过20
a = "alex" * 6
b = "alex" * 6
print(a == b)
print(a is b)
<3> 特殊字符(中文,符号)进行乘法的时候乘以0或1
a = "你好啊" * 1
b = "你好啊" * 1
print(a == b)
print(a is b)
(4)布尔值:True False
2、小数据池:
(1)整型(int): -5 ~ 256
a = 1000
b = 1000
print(a is b)
(2)字符串(str):
<1> 字母,数字长度任意符合驻留机制
a = "asdfasdfasdfsad12341123123121wef214afsda"
b = "asdfasdfasdfsad12341123123121wef214afsda"
print(a is b)
<2> 字符串进行乘法的时候总长度不能超过20
a = "alex" * 6
b = "alex" * 6
print(a == b)
print(a is b)
<3> 特殊字符进行乘法的时候只能乘0
a = "你好啊" * 0
b = "你好啊" * 0
print(a is b)
(4)布尔值:True False
小数据池,代码块同在的情况下先执行代码块
(Python考虑到我们会经常定义一些值,需要开辟空间和销毁空间,它底层就维护了一个小数据池,这个小数据就是规定一个区间使用的是同一个内存地址)
在py中默认先执行代码块;在终端中执行小数据池
3、驻留机制:节省空间,提升效率(减少了开辟空间和销毁空间的耗时)
4、== is id 的区分
(1) == 判断两个值是否相等
a = 10
b = 10
print(a == b) # True
(2) is : 是,判断的是两边的内存地址是否相同
a = 10
b = 10
print(a is b) # False
(3) id() 求地址
a = 1000
b = 1000
print(id(a),id(b))
5、深浅拷贝:
以后尽量避免,但面试必问
(1)赋值 : = 将多个变量指向一个同一个内存地址就是赋值
(2)浅拷贝:
只拷贝第一层元素的地址,只有修改第一层的时候源数据不受影响,给可变数据类型进行添加的时候源数据会受影响
= 是修改 .append是添加
可变数据类型能够修改和添加,不可变数据类型只能修改
(当拷贝完后,如果对其第一层进行修改(就会改变其对应的地址),则就不会对前一个产生影响。。
当拷贝完后,如果对其进行的是添加(不会改变指向地址)就会对前一个发生影响。)
a = [1,2,3,[4,5]]
b = a[:] # 浅拷贝
a[-1].append(6)
print(b)
a = [1,2,3,[4,5,6,[9,10]],67]
b = a # 赋值
b = a[:]
a[-2].append(10)
a[-2][-1].append(10)
print(b)
a = [1,2,[10,7,8],4]
b = a[:]
b[-2] = 90
print(a)
print(b)
(3)深拷贝:
不可变数据类型内存地址共用,可变数据类型新开批一个空间
import copy //导入copy模块
b = copy,deepcopy(a)
深拷贝中可变数据类型新开辟一个空间的原因是防止原可变数据类型发生紊乱。
import copy # 导入 copy模块
a = [1,2,3,[4,5],6]
b = copy.deepcopy(a)
print(id(a[-2]))
print(id(b[-2]))
Python 入门之代码块、小数据池 与 深浅拷贝的更多相关文章
- 6.Python初窥门径(小数据池,集合,深浅拷贝)
Python(小数据池,集合,深浅拷贝) 一.小数据池 什么是小数据池 小数据池就是python中一种提高效率的方式,固定数据类型,使用同一个内存地址 小数据池 is和==的区别 == 判断等号俩边的 ...
- python基础知识四 小数据池,深浅拷贝,集合+菜中菜
四.小数据池,深浅拷贝,集合+菜中菜 1小数据池 --缓存机制(驻留机制) '==' 判断两边内容是否相等 'is' 基于内存地址进行判断是否相同 a = 10 b = 10 print(a ...
- Python基础知识(六)------小数据池,集合,深浅拷贝
Python基础知识(六)------小数据池,集合,深浅拷贝 一丶小数据池 什么是小数据池: 小数据池就是python中一种提高效率的方式,固定数据类型使用同一个内存地址 代码块 : 一个文 ...
- python的小数据池和深浅拷贝
小数据池 一种数据缓存机制,也称驻留机制 在同一代码块,相同的值不会开辟新的内存 特殊字符除外 小数据池只针对:在控制台时! 数字 :-5到256间的整数会被缓存 布尔值:都会缓存8 字符串 小于等于 ...
- python27期day06:小数据池、深浅拷贝、集合、作业题。
0.pycharm是代码块.黑窗口是小数据池.如下图: 1.驻留机制(长得像的共用一个内存地址)分小数据池缓存机制:后期开发时能明确知道.为什么不能正常使用.把经常用的东西放入规则(黑窗口)里. 数字 ...
- day06——小数据池、深浅拷贝、集合
day06 小数据池 小数据池--缓存机制(驻留机制),只是一种规格,不会实际的开辟一个空间 == 判断两边内容是否相等 ***** # a = 10 # b = 10 # print(a == b) ...
- day4-python基础-小数据池以及深浅copy浅讲
今天的目录是 1.小数据池 2.深浅copy 正文开始 1.小数据池 在说明今天的内容前,先说明一个在今天重复用到的一个知识点 ###比较’=’俩边的数据是否完全相同,以及判断一个对象的内存地址是否完 ...
- Python二次编码、小数据池之心照神交
二次编码.解码.小数据池: encode(str:编码):参数编码方式,返回字节码. str_1 = "编码" str_2 = str_1.encode("utf-8&q ...
- python基础day7_编码及小数据池
数字概念,字符串----小数据池 数字的范围:-5---256 字符串: 1,不能有特殊字符 2,s*20还是同一个地址,s*21之后就是另外一个地址 i1 = 6 i2 = 6 print(id(i ...
随机推荐
- layui table 改
F.prototype.pullData = function(e) { success: function (t) { var da001 = i; window.getdata1234567(da ...
- cast() 函数进行类型转换
service_fee 字段定义:`service_fee` decimal(14,4) NULL DEFAULT NULL COMMENT '手续费金额,含税' , 需求:service_fee ...
- 使用 XSLT 显示 XML
通过使用 XSLT,您可以向 XML 文档添加显示信息. 使用 XSLT 显示 XML XSLT 是首选的 XML 样式表语言. XSLT (eXtensible Stylesheet Languag ...
- BZOJ 4517: [Sdoi2016]排列计数 错排 + 组合
从 $n$ 个数中选 $m$ 个不错排,那就是说 $n-m$ 个数是错排的. 用组合数乘一下就好了. Code: #include <cstdio> #include <algori ...
- POJ 2155 Matrix (树状数组 && 区间计数)
题意 : 给出一个N*N的矩阵, 矩阵只有可能包含0或1, 一开始则全部是0.对于矩阵可以进行两种操作, 第一种是输入 C x1 y1 x2 y2 表示, 对以(x1, y1)为左上角, 以(x2, ...
- Selenium 多表单(frame/iframe)切换
frame标签有frameset.frame.iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe需要切换进去才能定位到其中的元素 比如下面这个网 ...
- 常用的vi快捷方式
一般情况来说: 0代表行首,$代表行末 $,G代表最后一行 光标移动 0 移动到本行最前面 $ 移动到本行最后 G 移动文件最后一行 nG 移动到文件第n行 gg 移动到文件第一行 n[space]移 ...
- 9.并发编程--ThreadLocal
并发编程--ThreadLocal 1. ThreadLocal : * 线程局部变量,是一种多个线程间并发访问变量的解决方案. * 与其使用synchronized等加锁的方式,ThreadLoca ...
- ubuntu的无线网无法连上
自己的笔记本可以连上wireless,但是实验室的台式机无法连上. 有无线显示,就是无法连上. 后来把连在机箱上的网线拔了以后可以连无线了.如果有网线连接,系统优先会选择有线的上网.
- Git-Runoob:Git 基本操作
ylbtech-Git-Runoob:Git 基本操作 1.返回顶部 1. Git 基本操作 Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比.本章将对有关创建与提交你的项目快照的命令作 ...