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

1、代码块

(1)一个py文件,一个函数,一个模块,终端中的每一行都是代码块

(代码块是防止我们频繁的开空间降低效率设计的,当我们定一个变量需要开辟空间的时候,它会先去检测我们定义的这个值在空间中有没有进行开辟,如果没有开辟就开辟一个空间,如果内存中开辟过就使用同一个)。

(2)整型(int) : -5 ~ 正无穷

  1. a = -6
  2. b = -6
  3. print(a is b)
  4. a = 1000
  5. b = 1000
  6. print(id(a),id(b))
  7. print(a is b)

(3)字符串(str) :

<1> 定义字符串的时候可以是任意的

  1. a = "asdfasdfa22143df21af啊发生的vuwqtavuiqf!54人24215124"
  2. b = "asdfasdfa22143df21af啊发生的vuwqtavuiqf!54人24215124"
  3. print(a == b)
  4. print(a is b)

<2> 字符串(字母,数字)进行乘法时总长不超过20

  1. a = "alex" * 6
  2. b = "alex" * 6
  3. print(a == b)
  4. print(a is b)

<3> 特殊字符(中文,符号)进行乘法的时候乘以0或1

  1. a = "你好啊" * 1
  2. b = "你好啊" * 1
  3. print(a == b)
  4. print(a is b)

(4)布尔值:True False

2、小数据池:

(1)整型(int): -5 ~ 256

  1. a = 1000
  2. b = 1000
  3. print(a is b)

(2)字符串(str):

<1> 字母,数字长度任意符合驻留机制

  1. a = "asdfasdfasdfsad12341123123121wef214afsda"
  2. b = "asdfasdfasdfsad12341123123121wef214afsda"
  3. print(a is b)

<2> 字符串进行乘法的时候总长度不能超过20

  1. a = "alex" * 6
  2. b = "alex" * 6
  3. print(a == b)
  4. print(a is b)

<3> 特殊字符进行乘法的时候只能乘0

  1. a = "你好啊" * 0
  2. b = "你好啊" * 0
  3. print(a is b)

(4)布尔值:True False

小数据池,代码块同在的情况下先执行代码块

(Python考虑到我们会经常定义一些值,需要开辟空间和销毁空间,它底层就维护了一个小数据池,这个小数据就是规定一个区间使用的是同一个内存地址)

在py中默认先执行代码块;在终端中执行小数据池

3、驻留机制:节省空间,提升效率(减少了开辟空间和销毁空间的耗时)

4、== is id 的区分

(1) == 判断两个值是否相等

  1. a = 10
  2. b = 10
  3. print(a == b) # True

(2) is : 是,判断的是两边的内存地址是否相同

  1. a = 10
  2. b = 10
  3. print(a is b) # False

(3) id() 求地址

  1. a = 1000
  2. b = 1000
  3. print(id(a),id(b))

5、深浅拷贝:

以后尽量避免,但面试必问

(1)赋值 : = 将多个变量指向一个同一个内存地址就是赋值

(2)浅拷贝:

只拷贝第一层元素的地址,只有修改第一层的时候源数据不受影响,给可变数据类型进行添加的时候源数据会受影响

​ = 是修改 .append是添加

可变数据类型能够修改和添加,不可变数据类型只能修改

(当拷贝完后,如果对其第一层进行修改(就会改变其对应的地址),则就不会对前一个产生影响。。

​ 当拷贝完后,如果对其进行的是添加(不会改变指向地址)就会对前一个发生影响。)

  1. a = [1,2,3,[4,5]]
  2. b = a[:] # 浅拷贝
  3. a[-1].append(6)
  4. print(b)
  1. a = [1,2,3,[4,5,6,[9,10]],67]
  2. b = a # 赋值
  3. b = a[:]
  4. a[-2].append(10)
  5. a[-2][-1].append(10)
  6. print(b)
  1. a = [1,2,[10,7,8],4]
  2. b = a[:]
  3. b[-2] = 90
  4. print(a)
  5. print(b)

(3)深拷贝:

不可变数据类型内存地址共用,可变数据类型新开批一个空间

import copy //导入copy模块

b = copy,deepcopy(a)

深拷贝中可变数据类型新开辟一个空间的原因是防止原可变数据类型发生紊乱。

  1. import copy # 导入 copy模块
  2. a = [1,2,3,[4,5],6]
  3. b = copy.deepcopy(a)
  4. print(id(a[-2]))
  5. 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. python之sys._getframe() 用于查看函数被什么函数调用以及被第几行调用及被调用函数所在文件

    import sys def get_cur_info(): print(sys._getframe().f_code.co_filename) # 当前文件名,可以通过__file__获得 prin ...

  2. ecshop 的一些常用操作

    ecshop商品详细页显示已售商品数量和评论数量 ecshop增加已售数量和评论数量很简单,步骤如下,原创文章转载请指明同盟者网络<http://blog.sina.com.cn/tomener ...

  3. 一款基于jQuery Ajax的等待效果

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  4. 编译rxtx

    https://blog.csdn.net/github_29989383/article/details/51886234 https://cloud.tencent.com/developer/a ...

  5. SpringMvc配置自定义视图

    1.在dispatcherServlet-servlet.xml配置自定义视图 <!-- 配置视图 BeanNameViewResolver 解析器: 使用视图的名字来解析视图 --> & ...

  6. C# 格式化XML方法

    /// <summary> /// 格式化XML方法 /// </summary> public class UXMLFormat { public static string ...

  7. 自动爬取代理IP例子

    import time import json import datetime import threading import requests from lxml import etree from ...

  8. IDEA maven 阿里云镜像 下载jar失败

    我在使用IDEA搭建SpringCloud项目的时候,发现很多spring cloud 包总是下载不了.maven配置了阿里云镜像.在换了一下新版的镜像地址以后就可以下包了. 官方答疑:新版maven ...

  9. Delphi IDE使用的一些主要技巧

    Delphi IDE使用的一些主要技巧 1.查找和替换 (1)<ctrl>+F[1]:选择页“Find”,进行查找,则根据查找方向继续查找.选择页“Findin Files”,则进行该工程 ...

  10. wpf slider刻度

    TickFrequency:刻度之间的间隔   IsSnapToTickEnabled:是否对齐到刻度   TickPlacement:刻度位置