python:( == is 编码和解码 )

practice 

1. ==     is    id()

  ==   比较的是左右两边的值

  is      比较的是内存地址       id( )   ----获取内存地址     用法  print(id(变量))

    注意:pycharm是个坑,一个py文件中所有相同的字符串,

               一般都是使用一样的地址。 

a = 'alex'
b = 'alex'
print(a == b)  #True
n = 10
n1 = 10
print(n == n1) #True
li1 = [1,2,3]
li2 = [1,2,3]
print(li1 == li2) #True
View Code 
#字符串
a = 'alex'
b = 'alex'
print(a is b)  #True
#数字
n = 10
n1 = 10
print(n is n1)   #True
View Code
a = 'alex'
print(id(a))   # 36942544  内存地址
n = 10
print(id(n))     #1408197120
li = [1,2,3]
print(id(li))      #38922760
tu=(1,2,3)
print(id(tu))    #38727040
dic={1:"a",2:"b",3:"c"}
print(id(dic))     #5073944
View Code

 2.  小数据池       is

    数字小数据池范围:   -5~256  (包含-5和256)

      注意 :  大于256时  在pycharm中为True,在终端cmd中是False 

n=-6
n1=-6            #-6
print(n is n1)  # False
n=-5
n1=-5
print(n is n1)  # True
n=256
n1=256
print(n is n1)  # True
n=257
n1=257          #257
print(n is n1)  # True  在pycharm中(>256d)是True,在终端cmd中是False
View Code

 

     字符串小数据池:  

       # 字符串中部能包含特殊字符: +   -  *  /  @ 空格等等.   否则为False

                             含有字符串内存地址不一样

            有特殊字符在pycharm中为True,在cmd终端为False

      # 字符串单个字符*20以内,内存地址是一样的

               单个字符*20以上内存地址不一样的  

a="alex"
b="alex"
print(a is b)  #True

a="alex@"
b="alex@"
print(a is b)  # 有特殊字符在Pycharm中True   但是在终端中是False

n=5//2  #有运算
n1=2
print(n is n1)  #True

a="a"*20
b="a"*20
print(a is b)  #True

a="a"*21
b="a"*21
print(a is b)  #False
View Code 

 3.  编码和解码

    1) ASCII:
            不支持中文
            支持 英文,数字,字母,符号
            8位 一个字节

    2) GBK  国标:
            支持中文,英文,数字,符号
            英文(16位 2个字节)
            中文(16位 2个字节)

    3) unicode 万国码:
            支持中文,英文,数字,符号
            英文(32位 4个字节)
            中文(32位 4个字节)

    4) utf-8  长度可变的万国码  最少用8位
            英文(8位  1个字节)
            中文(24位 3个字节)

    5) utf-16 长度可变的万国码  最少用16位    
    
    python3中 程序运行阶段,使用的是unicode,因为它显示所有的内容
    unicode不可以用来文件传输和存储
    bytes也是一种类型  所有的传输和存储都是用bytes类型来进行.
    pycharm 存储的时候默认使用的是utf-8

 

       编码:  .encode("编码方式")   ----拿到明文编码后对应的二进制字节

       解码:  .decode("编码方式")   ----将编码后的字节 解码成对应的明文

         注意: 用什么进行编码,就要用什么解码

# .encode() 指定要变成什么类型的编码
s="alex"
print(s.encode("utf-8"))  #变成utf-8
#输出:b'alex'   b表示bytes

s="饿了吗"
print(s.encode("utf-8"))     #一个中文用3个字节表示
#输出:b'\xe9\xa5\xbf\xe4\xba\x86\xe5\x90\x97'
print(s.encode("gbk"))       #一个中文用2个字节表示
#输出:b'\xb6\xf6\xc1\xcb\xc2\xf0'

s="饿了"
s1=s.encode("utf-8")
print(s1)              #输出:b'\xe9\xa5\xbf\xe4\xba\x86'
print(s1.decode("gbk"))   #输出:楗夸簡

s="饿了"
s1=s.encode("gbk")
print(s1)                #输出:b'\xb6\xf6\xc1\xcb'
print(s1.decode("gbk")) #输出:饿了
View Code

 

posted @ 2018-08-02 15:51  葡萄想柠檬  Views(331)  Comments(0)    收藏  举报
目录代码