• 小数据池+ 编码


    1.代码块 和 命令行

    1)代码块

    python程序是由代码块构成的. 一个代码块的文本作为python程序执行的单元. 代码块: 一个模块, 一个函数, 一个类, 甚至每一个
    command命令都是一个代码块.一个文件也是⼀一个代码块, eval()和exec()执行的时候也是一个代码块。

    2)命令行

    cmd中一条命令为一个命令行。

    2.is和==的区别

    is是判断两侧的内存地址是否相同。

    ==是判断两侧的值是否相同

    我们可以这样认为. 如果内存地址相同. 那么值一定是相等的. 如果值相等. 则不一定是同一个对象

    3.小数据池

    小数据池. 一种数据缓存机制. 也被称为驻留机制. 各种编程语言中都有类似的东西. 在网上搜索常量池,小数据池指的都是同一个内容.数据池只针对: 整数, 字符串, 布尔值. 其他的数据类型不存在驻留机制。

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

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

    对于字符串:
    1). 如果字符串的长度是0或者1, 都会默认进行缓存
    2) 字符串长度大于1, 但是字符串中只包含字符, 数字, 下划线时才会缓存
    3) 用乘法的到的字符串. ①. 乘数为1, 仅包含数字, 字母, 下划线时会被缓存. 如果
    包含其他字符, 而长度<=1 也会被驻存, ②. 乘数大于1 . 仅包含数字, 字符, 下划
    线这个时候会被缓存. 但字符串长度不能大于20
    4)指定驻留. 我们可以通过sys模块中的intern()函数来指定要驻留的内容.

    4 编码的补充
    1. python2中默认使⽤的是ASCII码. 所以不支持中文. 如果需要在Python2中更改编码.
    需要在文件的开始编写:
    # -*- encoding:utf-8 -*-
    2. python3中: 内存中使⽤的是unicode码.

    编码回顾:
    1. ASCII : 最早的编码. 里面有英文字母,小写字母, 大写字母, 数字, 一些特殊字符. 没有中文,
    8个01代码, 8个bit, 1个byte
    2. GBK: 中文国标码, 里面包含了ASCII编码和中文常勇编码. 16个bit, 2个byte
    3. UNICODE: 万国码, 里面包含了全世界所有国家文字的编码. 32个bit, 4个byte, 包含了
    ASCII
    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'xe4xb8xad' 这是一个汉字的UTF-8的bytes表现形式

     

    s = "我叫李嘉诚"
    print(s.encode("utf-8")) #
    b'xe6x88x91xe5x8fxabxe6x9dx8exe5x98x89xe8xafx9a'
    print(b'xe6x88x91xe5x8fxabxe6x9dx8exe5x98x89xe8xafx9a'.decod
    e("utf-8")) # 解码

    s = "我是文字"
    bs = s.encode("GBK") # 我们这样可以获取到GBK的⽂字
    # 把GBK转换成UTF-8
    # ⾸先要把GBK转换成unicode. 也就是需要解码
    s = bs.decode("GBK") # 解码
    # 然后需要进⾏重新编码成UTF-8
    bss = s.encode("UTF-8") # 重新编码
    print(bss)

  • 相关阅读:
    CF821E 【Okabe and El Psy Kongroo】
    BZOJ1231: [Usaco2008 Nov]mixup2 混乱的奶牛
    P1896 [SCOI2005]互不侵犯
    QBXT Day 2 记录
    CF467C George and Job
    【luogu P3373 线段树2】 模板
    【luogu P1306 斐波那契公约数】 题解
    【luogu T24743 [愚人节题目5]永世隔绝的理想乡】 题解
    【luogu P1903 [国家集训队]数颜色】 题解
    莫队算法~讲解
  • 原文地址:https://www.cnblogs.com/qj696/p/10615557.html
Copyright © 2020-2023  润新知