id查询内存地址。
name = 'alex'
print(id(name))
name1 = 'alex'
name2 = 'alex'
print(name1==name2)
'='赋值运算 ‘==’比较数值相同
is 内存地址是否相同
小数据池。int str 在一定范围内,如果两个数值相同,为了节省内存,共用一个内存地址。
int: -5~256
str:1只包含数字或者字母元素,有非字母元素就不是小数据池。
2.单个字母* int(<21)存在小数据池。
剩下的类型都不存在
1.不同的密码本之间的二进制是不能互相识别的,容易报错或者产生乱码。
2.计算机的文件存储和传输都是0101010(gbk,utf-8,ascii.gb2312等)不能是unicode.
大前提:python3x,编码。
数据类型:
int
str
bytes:str拥有的所有方法,bytes都有。
bool
list
tuple
dict
set
python3x 内存中的编码方式是unicode
英文:
str:表现形式 name = "alex"
内部编码:unicode
bytes:表现形式:name1 = b"alex"
内部编码:非unicode
中文:
str:表现形式 name = "中国“
内部编码:unicode
bytes:表现形式:b'xe4xb8xadxe5x9bxbd'
内部编码:非unicode
bytes与str如何转化
str-------->bytes
b1=str.encode('utf-8')
bytes------->str
s1=bytes.decode('utf-8')
str ---> bytes
s1 = '中国'
b1 = s1.encode('utf-8') # encode 编码
# b2 = s1.encode('gbk')
# print(b1)
# print(b2)
s2 = b1.decode('utf-8') # decode 解码
print(s2)
utf-8 bytes ---> gbk bytes
s1 = b"alex"
print(s1.capitalize())
python3为什么存在bytes类型?(默写)
文件的下载与传输都是str类型,str的编码方式是unicode,bytes的编码方式是utf-8,机器识别不了unicode,而bytes又是类似于str的类型,
所以str先转化成bytes类型,在进行文件的传输与下载。