python3 id()is 内存地址

Posted 晨曦的等待

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3 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 = [email protected]
3 >>> j = [email protected]
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‘xe6x99x93xe6xa2x85‘ 6个字节
4 s2 = 晓晓
5 b22 = s2.encode(gbk)
6 print(b22)  # b‘xcfxfexc3xb7‘ 4个字节

 

 
 
 
 










































以上是关于python3 id()is 内存地址的主要内容,如果未能解决你的问题,请参考以下文章

Python小数据池,代码块解析

day_06(is == id ,编码)

is == id 用法, 代码块,缓存机制,深浅copy,集合

python3 is和==

'is' '==' 编码,解码

python求道06日