第六天

三.今日内容:
    1. is 和 == 的区别
        小数据池
             数字小数据池的范围  -5 ~ 256
             字符串中如果有特殊字符他们的内存地址就不一样
             字符串中单个*20以内他们的内存地址一样,单个*21以上内存地址不一致
             黑框框 == 终端
             a = 'alex@'
             a1 = 'alex@'
             print(a is a1)    # Fales
             n = 5//2
             n1 = 2
             print(n is n1)    #True
             a = 'a'*21
             b = 'a'*21
             print(a is b)
             a = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
             b = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
             print(a is b)
 

             n = -6
             n1 = -6
             print(n is n1)  #False
             n = -5
             n1 = -5
             print(n is n1)    #True

             n = 257
             n1 = 257
             print(n is n1)     #True

            总结:
                 == 比较   比较的俩边的值
                 is   比较   比较的是内存地址   id()
    2. 编码和解码
         ascii 码:
               不支持  中文
               支持    英文  数字  符号
               8位      一个字节
         gbk码  国标:
               支持  中文,英文,数字,符号
               英文  16位   二个字节
               中文  16位   二个字节

         unicode  万国码
                支持  中文,英文,数字,符号
                英文  32 位  四个字节
                中文  32位   四个字节

         utf-8   长度可变的万国码 最少用8位
                英文   8位    一个字节
                中文   24位   三个字节

         Python3中 程序运行阶段 使用的是unicode   显示所有的内容
         bytes类型
            传输和存储都是使用bytes
         pycharm 存储的时候默认是使用utf-8
总结:
    is 和 == 区别
        is  比较内存地址
                id()   ---- 获取内存地址
                小数据池:
                    数字的小数据池范围是 -5 ~ 256
                    字符串:
                        字符串中不能包含特殊符号   + - * / @ 等等
                        字符串单个字符*20以内内存地址都是一样的,单个字符*21以上内存地址不一致
        注意: pycharm是个坑, 一个py文件中所有相同的字符串 一般都是使用一样的内存地址
        ==  比较俩边的值
    编码和解码
        encode(编码方式)     ---- 拿到明文编码后对应的字节
        decode(编码方式)     -----将编码后的字节解码成对应的明文
 
    注意: 用什么进行编码就要什么进行解码  不然后会懵逼!
 

== 比较 比较是值

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

is 是 比较 比较的是内存地址

a = 'alex'
print(id(a)) # 36942544 内存地址

n = 10
print(id(n)) #1408197120

li = [1,2,3]
print(id(li)) #38922760

字符串
a = 'alex'
b = 'alex'
print(a is b) #True
数字
n = 10
n1 = 10
print(n is n1) #True

========================================================

小数据池

数字小数据池的范围 -5 ~ 256
字符串中如果有特殊字符他们的内存地址就不一样
字符串中单个*20以内他们的内存地址一样,单个*21以上内存地址不一致

黑框框 == 终端

a = 'alex@'
a1 = 'alex@'
print(a is a1) # Fales

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

a = 'a'*21
b = 'a'*21
print(a is b)

a = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
b = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
print(a is b)




n = -6
n1 = -6
print(n is n1) #False

n = -5
n1 = -5
print(n is n1) #True


n = 257
n1 = 257
print(n is n1) #True


总结:

== 比较 比较的俩边的值

is 比较 比较的是内存地址 id()





列表
li =[1,2,3]
li2 =[1,2,3]
print(li is li2) #False
元组
tu =(1,2,3)
tu1 =(1,2,3)
print(tu is tu1) # False
字典
dic1 = {'name':'alex'}
dic = {'name':'alex'}
print(dic1 is dic) #False

 

-*- encoding:utf-8 -*-

s = 'alex'
print(s.encode('utf-8')) # 编码 encode('utf-8') utf-8 是指定要编码成什么样的编码类型
print(s1.decode('utf-8')) #
bytes
b'alex'

s = '饿了'
s1 = s.encode('gbk') #b'饿了吗' #b'\xe9\xa5\xbf\xe4\xba\x86\xe5\x90\x97'
print(s.encode('gbk')) #b'\xb6\xf6\xc1\xcb\xc2\xf0'
print(s1)
print(s1.decode('utf-8'))

posted on 2018-08-02 17:52  符,  阅读(93)  评论(0)    收藏  举报

导航