python的 == 和 is,编码和解码

is和 ==

== 比较两边的值

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 比较内存地址

查询内存地址  id()

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

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

li = [1,2,3]
print(id(li))      #38922760
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)

 

小数据池

范围: -5~256

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

 

字符串 

单个字符串*20以内的内存地址是一样的(字符串中不能有特殊符号如:+ - * / @ ! ......等等)

单个字符串*20以上的内存地址是不相同

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

 

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

列表

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

 

注意:pycharm是个坑, 一个py文件中所有相同的字符串 一般都是使用一样的内存地址

编码   解码

编码有: asiic,unicode,gbk,utf-8,utf-16

 ascii 码:不支持中文,支持英文,数字,符号,  8位,一个字节

 gbk码:国标码,支持中文,英文,数字,符号.   英文每16位两个字节,  中文16位 二个字节

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

utf-8:目前使用最多的编码, 就是长度可变的万国码,最少用8位.   英文   8位    一个字节  中文   24位   三个字节

Python3中程序运行阶段使用的是unicode,可以显示所有的内容

 bytes类型:传输和存储都是使用bytes

 pycharm 存储的时候默认是使用utf-8

.encode('编码')    拿到明文后编码后对应的二进制的字节

.decode('编码')   将编码后的字节解码成对应的明文

它俩操作都要通过unicode作为中间桥梁来链接

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 @ 2018-08-02 19:43  张大仙er  阅读(219)  评论(0编辑  收藏  举报