zoukankan      html  css  js  c++  java
  • python06

    今日主要的内容:
    1.小数据池 2.is和==的区别 3.编码的问题
    1.代码块:一个模块,一个函数,一个类,甚至每一个command命令都是一个代码块.一个文件也是一个代码块,eval()和exec()执行的时候也是一个代码块
    2.小数据池/
    1)通过id()我们可以查看到一个变量表示的值在内存中的地址
    s='alex'
    print(id(s))
    a = [1,2,2,13,123,123,12,3,12,3,12,312,3,12,32,13,12,3,21]
    b = a #
    内存地址 id()
    print(id(a))
    print(id(b))
    a = 1000

    print(id(a)) # 内存的开辟是由解释器来完成的.

    双胞胎

    == 比较的是值(内容) True

    is 比较的是内存地址(是不是同一个对象) False

    lst1 = [1,2,3]

    lst2 = [1,2,3]

    print(lst1 == lst2) # 长得一样

    print(lst1 is lst2) # 不是同一个对象

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

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

    a = "alex"

    b = "alex"

    print(a == b)

    print(a is b) 在python中, 默认会把数字, 字符串, 布尔值进行缓存

           1.当我们在控制台的时候, 代码块与代码块之间的规则:
           2. 乘数不是1. 最终长度不能超过20          手动指定缓存  from sys import intern intern()制定缓存的内容    
           3. 布尔值
    

    2. py文件里. 一个代码块内部. 只会缓存int, str, bool 也有自己的小数据池。 缓存的范围会比外面的代码块的数据池要大

    1. 数字。都会缓存。 运算的结果不缓存(-5~256 会缓存)

    2. 字符串。 默认的字符串都缓存. 如果有乘法。 遵循上方的结论

    3. 布尔值。 默认缓存

    a = "alex@sb.com" # 5

    b = "alex@sb.com" # 1

    3.编码的补充

    1).python2中默认使用的是ASCII码.所以不支持中文.如果python2中更改编码.需要在文件的开始编写:

    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位.

    2)欧洲文字:16bit 2byte

    3)中文;24bit 3byte

    GBK和UTF-8不能直接互换

    转码

    '''

    在python2里面. 默认的编码是ASCII

    在python3中unicode是可以使用的。 默认用的就是Unicode. 代码用utf-8来存储

    如果用unicode存储, 如果用utf-8

    s = "你好啊" # 看到的就是unicode

    print(s)

    1. 编码. 把unicode转换成utf-8

    s = "刘洋很皮" # 12个字节

    abc = s.encode("UTF-8") # encode之后的结果是bytes类型 依然是原来的字符串

    print(abc) # b'数据'

    解码

    abc = b'xe5x88x98xe4xbcx9fxe5xbex88xe7x9axaf'

    s = abc.decode("UTF-8") # 解码。 用什么编码, 就用什么解码

    print(s)

    s = "刘洋"

    print(s.encode("GBK"))

    bs = b'xd5xd4xc8xf0xf6xce'

    print(bs.decode("GBK")) # GBK的编码不能用UTF-8解码

    GBK的编码. 把这句话变成UTF-8

    bs = b'xd5xd4xc8xf0xf6xce'

    先解码

    s = bs.decode("GBK")

    重新编码

    bs2 = s.encode("UTF-8")

    print(bs2)

  • 相关阅读:
    memset 还可以这样用
    搜索(DFS)
    搜索(BFS)
    最大流之sap算法
    最大流之sap算法
    String VS Cstring(字符串)
    String VS Cstring(字符串)
    Set 与 Multiset
    deque(双端队列)
    枚举 TODO
  • 原文地址:https://www.cnblogs.com/Li-Kai-168/p/9621117.html
Copyright © 2011-2022 走看看