python全栈开发 随笔 'is' 和 == 的比较知识与区别 编码和解码的内容及转换

python

一. is 和 == 的区别;

== 比较的是两边的值.

 a = 'alex' b = 'alex' print(a = b) #True 

 a = 10 b = 10 print(a = b) # True 

 a= [1,2,3] b= [1,2,3] print(a = b ) #True 

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

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

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

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

(1)字符串的 is 比较

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

(2)数字的 is 比较

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

小数据池: 数字的小数据池范围  -5~ 256

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

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

                字符串中如果有特殊字符,他们的内存地址就不一样;

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

                字符串中单个 * 20以内的他们的内存地址一样,单个 * 21 以上的内存地址不一致.

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

(3)列表的 is 比较

 li =[1,2,3] li2 =[1,2,3] print(li is li2) #False 

(4)元组的 is 比较

 tu =(1,2,3) tu1 =(1,2,3) print(tu is tu1) # False 

(5)字典的 is 比较

dic1 = {'name':'alex'}
dic = {'name':'alex'}
print(dic1 is dic)    #False

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

二.编码和解码

ascii 码:

不支持 中文 

支持 英文 数字 符号

8位     一个字节 

gbk 码  国标码

支持 中文 英文 数字 符号

英文  16位        2个字节

中文  16位        2个字节

unicode   万国码

 支持 中文 英文 数字 符号

英文  32位      4个字节

中文  32位      4个字节

utf - 8      长度可变的万国码     最少用 8位

英文      8位    1个字节

中文      24位     3个字节

python3中   程序运行阶段    使用的是 unicode     显示所有内容

bytes类型

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

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

encode(编码方式)   ---------------     拿到明文编码后对应的字节

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

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'xe9xa5xbfxe4xbax86xe5x90x97'
print(s.encode('gbk'))                 #b'xb6xf6xc1xcbxc2xf0'
print(s1)
print(s1.decode('utf-8'))

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

不然最后会懵逼

原文地址:https://www.cnblogs.com/qq1426794755/p/9406835.html