zoukankan      html  css  js  c++  java
  • Day-06 小数据池 再谈编码

    一、小数据池
    在说小数据池之前. 我们先看一个概念. 什么是代码块:
    代码块: 一个模块, 一个函数, 一个类, 甚至每一个command命令都是一个代码块. 一个文件也是一个代码块, eval()和exec()执行的时候也是一个代码块
    小数据池的作用:为了快速的创建字符串对象, 可以减少内存的浪费
    用缓存的前提:数据可以被共享。不可变.

    二、is和==的区别
    id() 查看变量的内存地址
    is 判断内存地址是否一致
    == 判断内容是否一致

    三、再谈编码
    python2中默认使用的是ASCII码. 所以不支持中文. 如果需要在Python2中更改编码.需要在文件的开始编写:
    # -*- encoding:utf-8 -*-
        python3中内存中使用的是unicode码.
    bytes的表现形式:
    1. 英文 b'alex' 英文的表现形式和字符串没什么两样
    2. 中文 b'xe4xb8xad' 这是一个汉字的UTF-8的bytes表现形式
    字符串在传输时转化成bytes ==> encode(字符集)来完成
     1 s = "alex"
     2 print(s.encode("utf-8")) # 将字符串编码成UTF-8
     3 print(s.encode("GBK")) # 将字符串编码成GBK
     4 结果:
     5 b'alex'
     6 b'alex'
     7 s = ""
     8 print(s.encode("UTF-8")) # 中文编码成UTF-8
     9 print(s.encode("GBK")) # 中文编码成GBK
    10 结果:
    11 b'xe4xb8xad'
    12 b'xd6xd0'
      记住: 英文编码之后的结果和源字符串一致. 中文编码之后的结果根据编码的不同. 编码结果也不同. 我们能看到. 一个中文的UTF-8编码是3个字节. 一个GBK的中文编码是2个字节.编码之后的类型就是bytes类型. 在网络传输和存储的时候我们python是保存和存储的bytes类型. 那么在对方接收的时候. 也是接收的bytes类型的数据. 我们可以使用decode()来进行解码操作. 把bytes类型的数据还原回我们熟悉的字符串:
    1 s = "我叫李嘉诚"
    2 print(s.encode("utf-8")) #
    3 b'xe6x88x91xe5x8fxabxe6x9dx8exe5x98x89xe8xafx9a'
    4 print(b'xe6x88x91xe5x8fxabxe6x9dx8exe5x98x89xe8xafx9a'.decode("utf-8")) # 解码
    
    
      编码和解码的时候都需要制定编码格式.
    1 s = "我是文字"
    2 bs = s.encode("GBK") # 我们这样可以获取到GBK的⽂字
    3 # 把GBK转换成UTF-8
    4 # 首先要把GBK转换成unicode. 也就是需要解码
    5 s = bs.decode("GBK") # 解码
    6 # 然后需要进行重新编码成UTF-8
    7 bss = s.encode("UTF-8") # 重新编码
    8 print(bss)
  • 相关阅读:
    就南通大学教务管理系统微信公众号的个人看法
    设计一款给爸爸妈妈用的手机
    .NET中DLL“没有可放置在工具箱的组件”—FreeTextBox
    如何查看.Net源代码vs版本号以及C#项目中各文件的含义
    .NET在后置代码中输入JS提示语句(背景不会变白)
    Docker技术学习
    学习linux基本命令
    性能相关英文单词学习
    常见Http状态码的含义
    学习siege实战
  • 原文地址:https://www.cnblogs.com/minusone/p/9843997.html
Copyright © 2011-2022 走看看