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 入门之代码块、小数据池 与 深浅拷贝的更多相关文章

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

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

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

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

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

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

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

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

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

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

  6. day06——小数据池、深浅拷贝、集合

    day06 小数据池 小数据池--缓存机制(驻留机制),只是一种规格,不会实际的开辟一个空间 == 判断两边内容是否相等 ***** # a = 10 # b = 10 # print(a == b) ...

  7. day4-python基础-小数据池以及深浅copy浅讲

    今天的目录是 1.小数据池 2.深浅copy 正文开始 1.小数据池 在说明今天的内容前,先说明一个在今天重复用到的一个知识点 ###比较’=’俩边的数据是否完全相同,以及判断一个对象的内存地址是否完 ...

  8. Python二次编码、小数据池之心照神交

    二次编码.解码.小数据池: encode(str:编码):参数编码方式,返回字节码. str_1 = "编码" str_2 = str_1.encode("utf-8&q ...

  9. python基础day7_编码及小数据池

    数字概念,字符串----小数据池 数字的范围:-5---256 字符串: 1,不能有特殊字符 2,s*20还是同一个地址,s*21之后就是另外一个地址 i1 = 6 i2 = 6 print(id(i ...

随机推荐

  1. Educational Codeforces round 78 A、B

    链接:https://codeforces.com/contest/1278 A:Shuffle Hashing 题意:对于一个字符串p可以执行一个"hash"操作,首先将p内的元 ...

  2. shiro框架学习-4- Shiro内置JdbcRealm

    1.  JdbcRealm 数据库准备 JdbcRealm就是用户的角色,权限都从数据库中读取,也就是用来进行用户认证授权的安全数据源更换为从数据库中读取,其他没有差别,首先在数据库创建三张表: CR ...

  3. 微信点餐系统(七)-微信授权获取openid:

    章节小结: 1.学会了微信授权的步骤,学会了微信授权的文档 2.学会了使用natapp内网穿透工具 3.加深了虚拟机的网络配置以及基本使用 4.学会了抓包购票工具fiddler的使用 5.微信授权步骤 ...

  4. [BZOJ2669][CQOI2012]局部极小值:DP+容斥原理

    分析 题目要求有且只有一些位置是局部极小值.有的限制很好处理,但是只有嘛,嗯...... 考虑子集反演(话说这个其实已经算是超集反演了吧还叫子集反演是不是有点不太合适),枚举题目给出位置集合的所有超集 ...

  5. [CF1101F]Trucks and Cities:分治优化决策单调性

    分析 好像是有一个叫这个名字的算法,链接. 令\(f[i][j][k]\)表示一辆每公里耗油量为\(1\)的货车从\(i\)到\(j\)中途加\(k\)次油最小的油箱容量.枚举所有的起点和中途加油的次 ...

  6. 3.并发编程-ReentrantLock 细节说明

    并发编程-ReentrantLock 细节说明 ---title: 并发编程-ReentrantLock 细节说明date: 2018-07-05 09:06:57categories: - 并发编程 ...

  7. Django基础之二(URL路由)

    URL路由 简介 对于高质量的web应用来说,使用简洁,优雅的URL路由是一个值得尊重的细节,Django可以随心所欲的设计URL,不受框架的约束 为了给一个应用设计URL,你需要一个Python模块 ...

  8. CentOS关闭系统不必要的端口

    注:以下所有操作均在CentOS 7.2 x86_64位系统下完成. 1)首先查看当前系统开放的端口号: # netstat -tlnup Active Internet connections (o ...

  9. 高级软件测试技术-小组任务分配和安排-Day01

    任务分配11-13 使用的工具 Jira 小组成员 华同学.郭同学.穆同学.沈同学.覃同学.刘同学 任务划分 1.撰写工具使用手册,要求在手册中至少说明如下内容: a. 该工具的基本情况,如名称,提供 ...

  10. MySQL中concat以及group_concat的使用

    摘自:https://www.jianshu.com/p/43cb4c5d33c1 说明: 本文中使用的例子均在下面的数据库表tt2下执行: 一.concat()函数 1.功能:将多个字符串连接成一个 ...