今天主要内容:

. is 和== 的区别

. 编程的问题

一.       is和==的区别!

is  比较的是内存地址

==  比较的是值

记住结果就好

⑴id

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

小数据池:把我们使用过的值存储在小数据池中,供其他变量使用

小数据池只能数字和字符串使用

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

str 字符串:

1,如果是纯文字信息和下划线,name这个对象会被添加到小数据池

2,如果是带有特殊字符的,那么不会被添加到小数据池,每次都是新的

3,如果是单一字母*n的情况,'a'*20 , 在20个单位内是可以的,超过20个单位就不会添加到小树池中

注意(⼀一般情况下): 在py⽂文件中. 如果你只是单纯的定义⼀一个字符串串. 那么⼀一般情况下都是会 被添加到⼩小数据池中的. 我们可以这样认为: 在使⽤用字符串串的时候, python会帮我们把字符串串 进⾏行行缓存, 在下次使⽤用的时候直接指向这个字符串串即可. 可以节省很多内存.

这个问题千万不要纠结. 因为官⽅方没有给出⼀一个完美的结论和定论.所以只能是⾃自⼰己摸索.

说了了这么多. 这个id()和is有什什么关系呢. 注意. is⽐比较的就是id()计算出来的结果. 由于id是帮我 们查看某数据(对象) 的内存地址. 那么is⽐比较的就是数据(对象)的内存地址. 最终我们通过is可以查看两个变量量使⽤用的是否是同⼀一个对象.

==  双等表⽰示的是判断是否相等, 注意. 这个双等⽐比较的是具体的值.⽽而不是内存地址

s1 = "哈哈"
s2 = "哈哈"
print(s1 == s2)  # True
print(s1 is s2)  # True 原因是有⼩小数据池的存在 导致两个变量量指向的是同⼀一个对象l1 = [1, 2, 3]
l2 = [1, 2, 3]
print(l1 == l2)  # True, 值是⼀一样的
print(l1 is l2)  # False, 值是假的

二     编码的补充

回顾一下编码

1.ASCII     8bit    1byte    (最早的编码,里面有英文大写字母,小写字母,数字,一些特殊字符,没有中文.

2.GBK      16bit   2byte    (中文国标码,里面包含了ASCII编码和中文常用编码,

3.UNICODE  32bit 4byte (  万国码,浪费空间

4.UTF-8 :可变长度的万国码,是UNICODE的一种实现,最小字符占8位.

1.英文:8bit  1byte

2,欧洲文字:  16bit   2byte

3,中文: 24bit   3byte

综上, 除了了ASCII码以外, 其他信息不能直接转换.

在python3的内存中. 在程序运⾏行行阶段. 使⽤用的是unicode编码. 因为unicode是万国码. 什什么内 容都可以进⾏行行显⽰示. 那么在数据传输和存储的时候由于unicode⽐比较浪费空间和资源. 需要把 unicode转存成UTF-8或者GBK进⾏行行存储. 怎么转换呢. 在python中可以把⽂文字信息进⾏行行编码. 编码之后的内容就可以进⾏行行传输了了. 编码之后的数据是bytes类型的数据.其实啊. 还是原来的 数据只是经过编码之后表现形式发⽣生了了改变⽽而已.

bytes的表现形式:

1. 英⽂文   b'alex'  英⽂文的表现形式和字符串串没什什么两样

2. 中⽂文   b'\xe4\xb8\xad' 这是⼀一个汉字的UTF-8的bytes表现形式

字符串串在传输时转化成bytes=> encode(字符集)来完成

s = "alex"
print(s.encode("utf-8"))    # 将字符串串编码成UTF-8
print(s.encode("GBK"))  # 将字符串串编码成GBK
结果:
b'alex'
b'alex's = "中"
print(s.encode("UTF-8"))    # 中⽂文编码成UTF-8
print(s.encode("GBK"))  # 中⽂文编码成GBK结果:
b'\xe4\xb8\xad'
b'\xd6\xd0'

记住: 英⽂文编码之后的结果和源字符串串⼀一致.  中⽂文编码之后的结果根据编码的不同. 编码结果 也不同. 我们能看到. ⼀一个中⽂文的UTF-8编码是3个字节. ⼀一个GBK的中⽂文编码是2个字节.

转载于:https://www.cnblogs.com/liuafan/p/9145133.html

python old six day相关推荐

  1. Github配置(git+vscode+python+jupyter)

    ①下载git 打开 git bash 工具的用户名和密码存储 $ git config --global user.name "Your Name" $ git config -- ...

  2. 【实验楼】python简明教程

    ①终端输入python进入 欣赏完自己的杰作后,按 Ctrl + D 输入一个 EOF 字符来退出解释器,你也可以键入 exit() 来退出解释器. ②vim键盘快捷功能分布 ③这里需要注意如果程序中 ...

  3. 【Kaggle Learn】Python 5-8

    五. Booleans and Conditionals Using booleans for branching logic x = True print(x) print(type(x))''' ...

  4. 【Kaggle Learn】Python 1-4

    [Kaggle Learn]Python https://www.kaggle.com/learn/python 一. Hello, Python A quick introduction to Py ...

  5. 使用python愉快地做高数线代题目~

    今天接触到了python,发现真是极易上手啊!对比c语言是什么鬼东西= = 诶,等下,看完教学文章发现TA在下面写了这句话 如果做了前面的内容你可能已被吸引了,觉得c语言真的是废材! 不...不是的. ...

  6. python 位运算与等号_Python 运算符

    和大多数语言一样,Python也有很多运算符,并且运算符跟其他语言的运算符大同小异接下来一一介绍: 算术运算符: 运算符描述实例 +加 - 两个对象相加a+b的输出结果是30 -减 - 得到复数或者一 ...

  7. python减小内存占用_如何将Python内存占用缩小20倍?

    当程序执行过程中RAM中有大量对象处于活动状态时,可能会出现内存问题,特别是在对可用内存总量有限制的情况下. 下面概述了一些减小对象大小的方法,这些方法可以显著减少纯Python程序所需的RAM数量. ...

  8. python中排序英文单词怎么写_Python实现对文件进行单词划分并去重排序操作示例...

    本文实例讲述了Python实现对文件进行单词划分并去重排序操作.,具体如下: 文件名:test1.txt 文件内容: But soft what light through yonder window ...

  9. python程序如何执行死刑图片_如何判断对象已死

    已死的对象就是不可能被任何途径使用的对象,有以下几种方法判断一个对象是否已经死了: 引用计数 给对象添加一个引用计数器,每当有一个地方引用他,计算器就加 1:当引用失效时,计数器减 1:任何时刻计数器 ...

  10. Python gRPC 安装

    1. 安装依赖库 sudo pip3 install grpcio sudo pip3 install protobuf sudo pip3 install grpcio_tools 2. 生成对应文 ...

最新文章

  1. frps 多个_frp端口批量穿透教程
  2. 数据结构排序算法实验报告_数据结构与算法-堆排序
  3. linux 邮件客户端 n1,N1:下一代开源邮件客户端
  4. UI设计十戒--设计师的艺术
  5. java包含点_Java的21个核心技术点,你知道吗
  6. VTK:Utilities之DataAnimation
  7. 入门级实操教程!从概念到部署,全方位了解K8S Ingress!
  8. 10.31T2 点双联通分量+预处理前缀+二分答案
  9. RSA 前段加密 java 后台解密 已调试通过
  10. “弱肉强食,月半者为王” | OpenDILab推出多智能体博弈环境Go-Bigger
  11. OpenCV探索之路——图像形态学处理(膨胀、腐蚀、开运算、闭运算)
  12. 免费下载IEEE论文的网站
  13. 74HC138译码器的原理和使用
  14. 每周一磁 · 磁性材料的居里温度与工作温度
  15. c++编写函数判断整数的位数
  16. PL-PS 接口说明
  17. keras中的目标函数和优化函数
  18. 修复vscode 终端字体间隔过大的问题
  19. 计算机主机房,计算机机房建设组成及划分标准
  20. Bug2021.01.07 Unity WebGL包 内网映射外网 图片下载不了

热门文章

  1. 【TensorFlow】TensorFlow从浅入深系列之十二 -- 教你深入理解卷积神经网络中的池化层
  2. 最新 | 更小、更快、更强!EfficientNetV2:Smaller-Faster-Better
  3. 用TensorFlow的Linear/DNNRegrressor预测数据
  4. 数据结构(十三)树的遍历
  5. signature=0d9b3a8f96c5f64e92cd85aaf7e70ac0,Scale controller
  6. android 底部动画,Android实现360手机助手底部的动画菜单
  7. abp mysql .net core_ABP .Net Core Entity Framework迁移使用MySql数据库
  8. Ubuntu终极指南
  9. queue模块的使用
  10. 解决mac安装homebrew后报错-bash: brew: command not found