python3 id()、is 内存地址

id()、is 内存地址

1,id() 内存地址
2.== 比较的是值
3.is 比较的是内存地址
数字,字符串,有小数据池
int -5--256
str:1,不能有空格
2.长度不能超过20个字符
3.不能有特殊字符。

 

1.id() 内存地址
 1 # id() 内存地址
 2 s = 'alex'
 3 print(s,type(s),id(s))
 4 # alex <class 'str'> 35619648
 5 # alex <class 'str'> 32146240

2.== 比较的是值
3.is 比较的是内存地址
  3.1列表、字典、元祖
  
1 # 列表、字典、元祖
2 l1 = [1,2,3]
3 l2 = [1,2,3]
4 print(l1 == l2)  # True
5 print(id(l1),id(l2))  # 35680008 35679368
6 print(l1 is l2)  #False
 字符串、数字的特殊的。比较内存地址,pc看不出来,用cmd来查看s1 = 'alex  '
3.2对于str 小数据池
范围
1.不能有空格。
2.长度不能超过20位。
3.不能有特殊字符。
cmd ---------》str
 1 # 有空格指向的是False
 2 >>> i = 'a'
 3 >>> i1= 'a'
 4 >>> print(i is i1)
 5 True
 6 
 7 >>> s1 = 'alex '
 8 >>> s2 = 'alex '
 9 >>> print(s1 == s2)
10 True
11 >>> print(s1 is s2)
12 False
13 
14 >>> i = 'a  b'
15 >>> i1= 'a  b'
16 >>> print(i is i1)
17 False

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

1 # 超过20位则为False
2 >>> i = 'a'*20
3 >>> j = 'a'*20
4 >>> print(i is j)
5 True
6 >>> i = 'a'*21
7 >>> j = 'a'*21
8 >>> print(i is j)
9 False

字符串中不能包含特殊符号如:+,- @,* /

1 # 有特殊字符也为False
2 >>> i = 'a@'
3 >>> j = 'a@'
4 >>> print(i is j)
5 False
 3.3对于int 小数据池
范围:
  -5---256 创建的相同的数字,都指向同一个内存地址。-5/256都包含
 1 >>> i = 6
 2 >>> i1= 6
 3 >>> print(i is i1)
 4 True
 5 >>> i = 258
 6 >>> i1= 258
 7 >>> print(i is i1)
 8 False
 9 >>> i = -5
10 >>> i1= -5
11 >>> print(i is i1)
12 True
4.编码与解码
py3:
str: 表现形式: s = 'alex' 实际编码方式:unicode
bytes: 表现形式: s = b'alex' 实际编码方式:utf-8,gbk,gb2312....

unicode : 所有字符(无论英文,中文等) 1个字符=4个字节

gbk : 一个字符,英文1个字节。中文两个字节。

utf-8 : 英文1个字节。欧洲:2个字节。亚洲:3个字节。


    py3:
unicode A :00000000 00000000 00000000 00001001 四个字节
中 :00000000 00001000 00000000 00000001 四个字节

utf-8 A :00000001 一个字节
欧洲@ : 00000010 00000001 两个字节
亚洲 '中' : 00001000 00000000 00000001 三个字节
'中国':00001000 00000000 00000001 00001001 00000000 00000001

gbk A :00001001 1个字节
中 :00000000 00100001 两个字节
不同的编码之间是不能相互识别,会产生乱码。

存储,传输的:utf-8,或者 gbk,或者是gb2312,或者是其他(绝对不是unicode)。

1 s1 = '晓晓'
2 b11 = s1.encode('utf-8')
3 print(b11)  # b'\xe6\x99\x93\xe6\xa2\x85' 6个字节
4 s2 = '晓晓'
5 b22 = s2.encode('gbk')
6 print(b22)  # b'\xcf\xfe\xc3\xb7' 4个字节

 

 
 
 
 
posted @ 2018-08-02 15:18  Montant  阅读(2277)  评论(0编辑  收藏  举报