0504Python基础,is == id
1,昨日内容回顾
字典:
增:
dic['name'] = 'alex' 有则覆盖,无责添加
dic.setdefault('name','wusir') 有责不变,无责添加。
删:
pop:dic.pop(键,'无此键值对') 有返回值,返回的是对应的值。
popitem 随机删除。有返回值。
clear 清空字典。
del
del dic['name']
del dic 在内存级别,删除字典。
改:
dic['name'] = 'alex' 有则覆盖,无责添加
update 将一个字典的所有键值对,覆盖添加到另一个字典。
dic2.update(dic1)
查:
dic['name']
dic.get('name1') 无此键默认返回None,可以设置返回值。
for 循环。
dic.keys() dic.values() dic.items() 返回的都是类似于list的数据类型,可遍历,没有索引。list(dic.keys())
3,is == id 小数据池
is 内存地址是否相同
赋值运算 == 比较数值相同
name1 = 'alex'
name2 = 'alex'
print(name1 == name2)
id 查询内存地址。
小数据池。int str 在一定范围内,如果两个数值相同,为了节省内存,共用一个内存地址。
int -5 ~ 256
str :1,有非字母元素就不是小数据池。
2, 单个字母* int(21)存在小数据池。剩下的类型 都不存在。
4,编码二
ASCII: 一个字符 1个字节表示(8位),数字字母特殊字符。
unicode:万国码
一个字符用四个字节表示》
A:0000 0001 0000 0001 0000 0001 0000 0001
中:0000 0001 0000 0001 0000 1001 0000 0001
utf-8:
a: 0000 0001
欧洲:0000 0001 0100 0001
亚洲:0000 0001 0000 0001 1100 0001
gbk:国标
a:0001 0001
中:0000 0001 0000 0001
1,不同的密码本之间的二进制是不能互相识别的,容易报错或者产生乱码。
2,计算机的文件存储和传输都是0101010(gbk,utf-8,ascii,gb2312等)不能是unicode。
with open('02 作业讲解.py',encoding='utf-8') as f1:
print(f1.read(),type(f1.read()))
name = "alex"
name1 = b"alex"
print(name,type(name))
print(name1,type(name1))
name = "中国".encode('utf-8')
name1 = b"alex"
print(name,type(name))
print(name1,type(name1))
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())
大前提: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'\xe4\xb8\xad\xe5\x9b\xbd'
内部编码:非unicode