Python中is和==的区别,以及编码与解码

Python中’is’和’=='的区别,以及编码与解码

Python中’=='和’is’的区别

(1)Python中’==’
  1. Python中’==比较变量的值,如果值相同返回True,如果不同返回Flase
  2. 这里的变量值包含数字,字符串,元组,列表,字典.
    3)示例如下
>>> a=1
>>> b=1
>>> a==b
True
>>> a='1'
>>> b='1'
>>> a==b
True
>>> a=(1,2)
>>> b=(1,2)
>>> a==b
True
>>> a=[1,2]
>>> b=[1,2]
>>> a==b
True
>>> a={'a':1,'b':2}
>>> b={'a':1,'b':2}
>>> a==b
True
>>> 
(2)Python中’is’
  1. Python中’is’是比较两个变量的id(内存地址)是否一致,如果是返回True,如果不是返回Flase
    2)id的查询为id(变量)示例如下,其中变量之间的赋值id不变,两个变量指向同一id,但变量与数值之间的赋值会改变id(小数据池中的例外)
>>> a=[1,2,3]
>>> b=a
>>> a is b
True
>>> id(a)
49562824
>>> id(b)
49562824
>>> c=[1,2,3]
>>> id(c)
4579080
>>> c is b
False
>>> 
(3)扩充,Python中的小数据池

1)小数据池:一种数据缓存机制. 也被称为驻留留机制,Python中内置,为节省空间而存在的,只有部分数字和字符串
2)(shell下)数字范围:-5~256
示例如下

>>> a=-6
>>> b=-6
>>> a is b
False
>>> a=-5
>>> b=-5
>>> a is b
True
>>> a=256
>>> b=256
>>> a is b
True
>>> a=257
>>> b=257
>>> a is b
False
>>> 

3)(shell下)字符串范围:不含特殊符号 以及单个字符乘20以内数字,示例如下

>>> a='alex@'
>>> b='alex@'
>>> a is b
False
>>> a='a'*20
>>> b='a'*20
>>> a is b
True
>>> a='1234567890abcdefghijklmnopqrstuvwxyz'
>>> b='1234567890abcdefghijklmnopqrstuvwxyz'
>>> a is b
True

4)IDLE和Pycharm的小数据池不同于shell

Python中编码与解码(Python3运行阶段使用unicode)

(1) ASCII:

1)不支持中文
2)支持 英文,数字,字母,符号
3)编码情况 英文:8位,1个字节

(2) gbk 国标:

1)支持 英文,数字,字母,符号
2)编码情况 英文:16位,2个字节 中文:16位,2个字节

(3) unicode 万国码:

1)支持 英文,数字,字母,符号
2)编码情况 英文:32位,4个字节 中文:32位,4个字节

(4) utf-8长度可变万国码,最小8位:

1)支持 英文,数字,字母,符号
2)编码情况 英文:8位,1个字节 中文:24位,3个字节

(5)bytes类型:

1)网络传输和储存使用bytes

(6)解码:

1)pycharm编码时使用utf-8(s.encod(‘utf-8’),指将s用utf-8编码)
2)s.decode(‘utf-8’)将s用utf-8解码)`
3)用什么编码就用什么解码,否则会乱码

>>> a='你好'
>>> b=a.encode('utf-8')
>>> c=b.decode('gbk')
>>> print(b)
b'\xe4\xbd\xa0\xe5\xa5\xbd'
>>> print(c)
浣犲ソ
>>> c=b.decode('utf-8')
>>> print(c)
你好
发布了17 篇原创文章 · 获赞 2 · 访问量 463

猜你喜欢

转载自blog.csdn.net/qq_45894553/article/details/104465523