我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python学习笔记:第6天 小数据池和

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python学习笔记:第6天 小数据池和

目录

  • 1. id 和 ==
  • 2. 小数据池
  • 3. 编码和解码

1. id 和 ==

  • idid是一个内置的函数,可以查看变量存放的内存地址(实际上不是真正的物理地址,这里暂时这样理解),用于判断是变量否属指向了同一块内存地址
  • ==:== 可以用于判断两个变量的值是否相等,这个在之前的例子中也有用过

下面来看几个例子,以及具体的使用方法:

In [1]: a = 'abc'

In [2]: b = 'abc'

In [3]: a == b
Out[3]: True

In [4]: a is b
Out[4]: True

In [5]: c = 100

In [6]: d = 100

In [7]: c == d
Out[7]: True

In [8]: c is d
Out[8]: True

In [9]:

通过上面的例子可以总结出:字符串和数字在之前有定义过的话,后续再用到这个变量时,不会再分配内存,而是直接把新的变量直接指向之前定义过的值,因此使用is判断时结果都为True,这种机制被称作为缓存机制。但是这里也有比较坑的一点,我们再来看下面的例子:

In [9]: c = 1000

In [10]: d = 1000

In [11]: c is d
Out[11]: False

In [12]:

同样是数字,但是100和1000的结果却不一样,这个要根据下面的一个知识点来看。

2. 小数据池

通过上面的例子可以看出,100和1000的值在经过相同的运算之后得到不同的结果,那么我们可以这样认为:如果内存地址一样,那么对应的值一定是相等的,但是反过来值一样的话内存地址不一定一样;我们先在来看几个例子:

In [15]: a = -5   
                  
In [16]: b = -5   
                  
In [17]: a is b   
Out[17]: True     
                  
In [18]: c = -6   
                  
In [19]: d = -6   
                  
In [20]: c is d   
Out[20]: False    
                  
In [21]: c = 300  
                  
In [22]: d = 300  
                  
In [23]: c is d   
Out[23]: False    
                  
In [24]:

这种现象是因为小数据池的存在。小数据池(非官方解释):是一种缓存机制,也被称为驻留机制,其他语言中也有类似的机制,他会把数据存储起来方便下次赋值时使用,以避免多个内存存放相同值的元素。

小数据池对数据的处理方法:

  • 小数据池只针对数字、字符串和布尔值有效
  • 数字的处理:在python中对-5到256之间的整数会被驻留在内存中. 将⼀定规则的字符串缓存;
  • 对字符串的处理:如果字符串的⻓度是0或者1, 都会默认进⾏缓存;字符串⻓度⼤于1, 但是字符串中只包含字⺟, 数字, 下划线时才会缓存

使用小数据池的优缺点:

  • 优点: 能够提⾼⼀些字符串, 整数的处理速度. 省略的创建对象的过程.
  • 缺点: 在'池'中创建或者插入新的内容会花费更多的时间.

3. 编码和解码

编码回顾:

  • ASCII:是最早的一种编码,是其他编码的基础,占用8bit,1byte
  • GBK:中文国标码,16bit,2byte
  • Unicode:万国码,包含了全世界各国的语言,32bit,4byte
  • UTF-8:可变的Unicode,是Unicode的一种实现
    • 英文:8bit,1byte
    • 欧洲文字:16bit, 2byte
    • 中文:24bit,3byte

在网络传输和文件存储中,经常需要在各种编码之间转换,最常用的如UTF-8和Unicode等。
Unicode的表现形式:即python程序存储在内存中的字符串
byte表现的形式:

  • 英文:b'i like python',除了前面加b之外跟普通字符串一样
  • 中文:b'\xe4\xb8\xad'

字符编码之间的转换使用encode和decode操作:

In [24]: a = 'i like python'

In [25]: b = '我喜欢python'

In [26]: a.encode('utf-8')
Out[26]: b'i like python'

In [27]: b.encode('utf-8')                               # 编码成utf-8字符
Out[27]: b'\xe6\x88\x91\xe5\x96\x9c\xe6\xac\xa2python'

In [28]: c = b'\xe6\x88\x91\xe5\x96\x9c\xe6\xac\xa2python'

In [29]: c.decode('utf-8')                              # 以utf-8的编码来解码
Out[29]: '我喜欢python'

In [30]: b
Out[30]: '我喜欢python'

In [31]: b.encode('GBK')
Out[31]: b'\xce\xd2\xcf\xb2\xbb\xb6python'

In [32]: e =  b'\xce\xd2\xcf\xb2\xbb\xb6python'

In [33]: e.decode('GBK').encode('utf-8')               # 把GBK编码转换成UTF-8编码
Out[33]: b'\xe6\x88\x91\xe5\x96\x9c\xe6\xac\xa2python'

In [34]: f = e.decode('GBK').encode('utf-8')

In [35]: f.decode('utf-8')
Out[35]: '我喜欢python'

In [36]:

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python学习笔记:第6天 小数据池和

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python学习笔记:第6天 小数据池和

目录 1. id 和 == 2. 小数据池 3. 编码和解码 1. id 和 ==id:id是一个内置的函数,可以查看变量存放的内存地址(实际上不是真正
2023-01-30

Python学习笔记:第一天python

目录 1. python简介 2. python的安装 3. 编写第一个helloword 4. 变量和常量 5. 数据类型 6.
2023-01-30

Python学习笔记:第2天while循

目录 1. while循环 continue、break和else语句 2. 格式化输出 3. 运算符 3.1 算数运算
2023-01-30

python学习笔记:第17天 面向对象

一、类与类之间的依赖关系⼤千世界, 万物之间皆有规则和规律. 我们的类和对象是对⼤千世界中的所有事物进⾏归类. 那事物之间存在着相对应的关系. 类与类之间也同样如此. 在⾯向对象的世界中. 类与类中存在以下关系:依赖关系关联关系组合关系聚合
2023-01-30

python学习笔记:第19天 类的约束

目录 一、类的约束 二、异常处理: 三、MD5加密 四、日志(logging模块) 一、类的约束真正写写项目的代码时都是多人协作的,所以有
2023-01-30

python学习笔记:第7天 深浅拷贝

目录 1. 基础数据类型补充 2. set集合 3. 深浅拷贝 1. 基础数据类型补充(1)join方法join方法是把一个列表中的数据进行拼接,拼接成
2023-01-30

python学习笔记:第16天 面向对象

目录 ⼀、类的成员介绍: 二、类的成员-变量 三、类的成员-方法 四、类的成员-属性 五、私有属性 ⼀、类的成员介绍:⾸先,
2023-01-30

[Python学习笔记]Python数据

嵩天老师的课感觉很好呀,啦啦啦0. 数据分析之前奏课程主要内容:常用IDE:本课程主要使用:AnacondaAnaconda:一个集合,包括conda、某版本Python、一批第三方库等  -支持近800个第三方库  -适合科学计算领域 
2023-01-30

Python学习笔记一(Python数据

Python数据类型主要包括数字,字符串,列表,元组和字典。字符串,列表,元组和字典都是序列,序列最主要两个特点是索引操作和切片操作,索引操作让我们从序列中抓取一个特定项目,切片操作让我们能够获取序列的一个切片,即一部分序列。1.数字 P
2023-01-31

python 学习笔记 3 -- 数据

当你创建一个对象并给它赋一个变量的时候,这个变量仅仅 引用 那个对象,而不是表示这个对象本身!也就是说,变量名指向你计算机中存储那个对象的内存。这被称作名称到对象的绑定。eg. # -*- coding: utf-8 -*-  shopli
2023-01-31

Python数据类型学习笔记

带你走进数据类型 一:整数、浮点数 Python中整数和浮点数的定义以及运算和C++都是一样的,我在这里就不需多说了,我就说明一点:Python相对于C/C++而言,定义整数没有int 和 long long 这些区分的,直接赋值即可。这就
2022-06-04

学习python的第五天(数据类型)

一复习1.查看数据类型#数值10的位置print(di(10))#数值10的样式print(type(10))2.关于变量的一些补充a=1b=1c=1#a,b,c三种位置判断print(a is b is c)print(id(a)=id(
2023-01-31

Python学习笔记(2)操作符和数据类

2019-02-25一:(1)常用操作符:  ① 算数操作符:=、-、*、/、%(求余)、**(幂运算)、//(地板除法:计算结果取比商小的最大整型)  注意:幂运算操作符比其左侧的一元运算符的优先级高,比其右边的一元运算符优先级低。  测
2023-01-30

python学习笔记3:函数和参数

函数函数的参数和返回值形参(形式参数): 在函数定义的时候用到的参数没有具体值,只是一个占位的符号,成为形参,下例中的peison实参(实际参数): 在调用函数的时候输入的值:下例中的明月def hello(person): prin
2023-01-31

学习python的第十一天(集合数据类型

1.集合数据类型1.定义用{}中间值用,隔开,且集合中元素排列是无序的,而且如果有相同元素会只保留一个2.算法1.必须掌握1.长度lenset_1 = {1,2,3,4,5}print(len(set_1))#52.成员运算in和not i
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录