python学习之旅-06 之小数据池,编码

一、代码块

  python程序的是由代码块构成的。一个代码块的文本作为python程序的执行单元。

  1、在命令行中,每一行都是代码块

  2、在py文件中,整个可执行内容为一个代码块

二、is 和 == 的区别

  1、id()

    通过id()我们可以查看到一个变量表示的值在内存中的地址 

    s = ‘alex‘
    print(id(s)) # 4326667072

  2、is 和 ==

    ==判断左右两端的值是否相等,是否一致

    is判断左右两端内容的内存地址是否一致。如果返回True,那么可以确定这两个变量使用的是同一个对象

二、小数据池

 定义: 

  一种缓存机制,也被称为驻留机制,也称为校正数缓存机制。各大编程语言中都有类似的东西。在网上搜索常量池,

小数据池值得都是同一个内容。

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

前提条件:在不同一个代码块内

1、在python中对 -5到256之间的整数会被驻留在内存中。将一定规则的字符串缓存。在使用的时候直接从

小数据池取对象的内存引用,而不需要创建一个新的数据。这样会节省更多的内存区域。

  优点:能够提高一些字符串,整数的处理速度。省略创建对象的过程

  缺点:在"池"中创建或者插入新的内容会花费更多的时间

对于数字:-5 ~256 是会加到小数据池中的。每次使用都是同一个对象。

对于字符串:

  a、如果字符串的长度是0或者1,都会默认进行缓存

  b、字符串长度大于1,但是字符串中只包含数字,字母,下划线时才会被缓存

  c、?乘法的到的字符串. ①. 乘数为1, 仅包含数字, 字?, 下划线时会被缓存. 如果
     包含其他字符, ??度<=1 也会被驻存, ②. 乘数?于1 . 仅包含数字, 字?, 下划
     线这个时候会被缓存. 但字符串?度不能?于20

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

2、小数据池和代码块的关系

a、在comand命令窗口和python 文件中:

  a = 1000

  b = 1000

  print(a is b)

注意:在py文件中,得到的结果是True,但是在command中是False

因为:在command窗口中每一行代码都是单独的代码块,会遵循小数据池的缓存机制--整数的范围为(-5-156)

   在py文件中单纯的创建变量都是有缓存的,如若进行了*的操作,则是回到小数据池规定的范围;

三、编码

 1、

  ascii: 数字、字母、特殊字符

    字节:8bit

  gbk:国标码,16bit,2bytes

  unicode:万国码, 32bit, 4bytes

  utf-8:可变长度的unicode

    英文:1byte ,8bit

    欧洲文字:2byte ,16bit

    中文:3byte , 24bit

  注:各编码之间的二进制,是不能相互识别的,会产生乱码

    文件的存储,传输不能是Unicode(只能是utf-8  utf-16  gbk  gb2312  ascii等)

 2、 

  python3 内存中使用的是unicode

  s = "你好啊"

  python2 中使用的是 ascii

3、

  字符串如果传输:将str--->bytes

  encode(编码) :结果是bytes类型

  接收bytes之后,需要解码

  decode(编码)。结果是字符串

4、py3:

    str 在内存中是用Unicode编码

      bytes类型

        对于英文:

          str:表现形式: s = ‘alex‘

            编码方式:010101010  Unicode

          bytes:表现方式:s = b‘alex‘

              编码方式:00101010  utf-8 gbk

        对于中文:

            str:表现形式: s = ‘alex‘

            编码方式:010101010  Unicode

          bytes:表现方式:s = b‘x\e91\e01\e21\e31\e32‘

              编码方式:00101010  utf-8 gbk  ....

原文地址:https://www.cnblogs.com/dandanouni/p/12534035.html

时间: 2024-07-31 14:27:45

python学习之旅-06 之小数据池,编码的相关文章

Python 中的驻留机制:小数据池和代码块

Python 中的驻留机制:小数据池和代码块 Python 中的驻留机制主要有两个:小数据池和代码块.驻留机制并不是学习 Python 过程中特别重要的概念,我们学习小数据池的目的主要有两个方面: 解决日后写代码过程中可能出现的疑惑.在后期开发中,能 明确 知道有些代码为什么不能正常使用 找工作面试时或多或少可能被问到,关键时刻起到装 X 的作用 先补充一个关键字 is.is(是) 和 ==(等于) 的作用十分相似,我们在这里将它们进行一个对比: == : 官方:判断等号两边的内容是否相同 白话

python之路---06 小数据池 编码

二十二.小数据池, id()    进行缓存 1.小数据池针对的是: int, str, bool 2.在py文件中几乎所有的字符串都会缓存.   在cmd命令窗口中几乎都不会缓存   不同的解释器有不同的机制 3.id() 查看变量的内存地址 4. is和==的区别 is 比较的是内存地址 == 比较的是内容 当两个变量指向同一个对象的时候. is是True, ==也是True 5. 优点:快速创建对象,节省内存 缺点:缓存如果过大,影响速度会比较慢 二十三. 再谈编码 回顾: 1. asci

python之路(内存,小数据池,编码等)

代码块: python真正的代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块. 但是,在python终端交互模式下,每一条代码都是一个代码块 python在同一个代码块中的变量,初始化对象的命令时,它会将变量与值的对应关系放到一个字典中, 如果下面的代码在遇到初始化对象的命令,他会先从字典中寻找,如果存在相同的值,他会复用,指向的都是同一个内存地址. >>> i1 = 1000 可以理解为这一行在一个文件中. >>> i2 = 1000 可以理解为这一行在另

180分钟的python学习之旅

最近在很多地方都可以看到Python的身影,尤其在人工智能等科学领域,其丰富的科学计算等方面类库无比强大.很多身边的哥们也提到Python非常的简洁方便,比如用Django搭建一个见得网站只需要半天时间即可,因此也吸引了我不小的兴趣.之前相亲认识过一个姑娘是做绿色环保建筑设计行业的,提过她们的建筑物的建模也是使用Python,虽然被女神给拒绝了,但学习还是势在必行的,加油. 这部分只涉及python比较基础的知识,如复杂的面向对象.多线程.通信等知识会放在之后的深入学习中介绍,因此整个学习过程也

Python代码块缓存、小数据池

引子 前几天遇到了这样一道Python题目:a='123',b='123',下列哪个是正确的? A. a != b B. a is b C. a==123 D. a + b =246 正确答案是B 是的,我选错了,我当时觉得没有正确答案,原因是我当时已经知道Python中 == 与 != 是比较两边的数值是否相等,很显然 a==b,我也知道 is 比较的是两边的内存地址是否相同,而内存地址是否相同是通过比较 id(a) 是否等于id(b)来知道的,而我想当然地认为a和b是两个不一样的变量,内存地

相识python 之小数据池 集合

?一. ?小数据池 在说?小数据池之前. 我们先看?一个概念念. 什什么是代码块: 根据提示我们从官?方?文档找到了了这样的说法: A Python program is constructed from code blocks. A block is a piece of Python program text that is executed as a unit. The following are blocks: a module, a function body, and a class

python小数据池、代码块

一.代码块 Python程序是由代码块构造的.块是一个python程序的文本,他是作为一个单元执行的. 代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块. 而作为交互方式输入的每个命令都是一个代码块. 什么叫交互方式?就是咱们在cmd中进入Python解释器里面,每一行代码都是一个代码块. 不同的代码块: def func(): print(333) class A: name = 'alex' 虽然上面的缩进的内容都叫代码块,但是他不是python中严格定义的代码块. for i

python 小数据池、代码块详解

首先我们来看看下面的问题,第一次遇到还以为见鬼了.                    看到上面这么多种情况刚开始直接就懵逼了.100ID一样,1000就不一样.终端运行情况居然会和pycharm不一样. 后面终于搞懂了,原来这里头有大学问,且看下面分析. 一.代码块 Python程序是由代码块构造的.块是一个python程序的文本,他是作为一个单元执行的. 代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块. 而作为交互方式输入的每个命令都是一个代码块. 也就是说:       所

Python 代码块 小数据池

一  代码块 什么是代码块??? Python程序是由代码块构造的.先举一个例子: 1 for i in '12334567': 2 print(i) 1 def func(): 2 print('Hello,world!') 1 class A: 2 name = 'colin' 从上面的例子可以称为代码块,虽然上面的缩进的内容都叫代码块,但是他们并不是python中严格定义的代码块. 那么,python中真正意义上的代码块又怎么定义? 因此,我们定义:一个模块,一个函数,一个类,一个文件等都