Python学习--编码和变量的内存问题

编码问题

一.Python2

默认为ascii码,使用时需要使用

# -*- encoding:utf-8 -*-

二.Python3

默认为utf-8

编码方式 解释
unicode 一个字节表示所有英文、特殊字符、数字等,用四个字节表示中文(过于浪费资源)
utf-8 unicode升级版,用三个字节表示一个中文字
gbk 中国国内使用,一个中文字两个字节

tips:不同编码方式之间不能解析彼此的二进制码

  1. 字符串编码
    内存中str型默认使用unicode,不能用于储存和传输使用(占用过多空间,仅在转码时借用),需要转码成bytes类型(使用utf-8等格式编码),可用于传输和储存。

str
bytes

1.英文表示

s = 'alex'
print(s, type(s))
s1 = b'alex'
print(s1, type(s1))
alex <class 'str'>  # unicode编码
b'alex' <class 'bytes'>  # utf-8...编码

2.中文表示

s = '程序员'
print(s, type(s))
s1 = '程序员'.encode('utf-8')  # 默认为utf-8
print(s1, type(s1))
程序员 <class 'str'>  # unicode编码
b'\xe7\xa8\x8b\xe5\xba\x8f\xe5\x91\x98' <class 'bytes'>  # 16进制表示,一个中文字3个字节

tips: python3中用encode,通过类型转换来进行编码转换

内存问题

int型和str型的变量在一定范围内会存储在同一个小数据池中,以此来减少内存消耗。
id():返回内存地址,等同于c++的指针

s1 = 2
s2 = 257
print(id(s1), id(s2))
1905683232 2468906249936

猜你喜欢

转载自blog.csdn.net/weixin_44138435/article/details/85212362