1.数据类型与变量
1.用十六进制表示整数比较方便,十六进制用0x
前缀和0-9,a-f表示,例如:0xff00
,0xa5b4c3d2
2.
为了简化,Python还允许用r''
表示''
内部的字符串默认不转义
3.为了简化,Python允许用'''...'''
的格式表示多行内容
4.空值是Python里一个特殊的值,用None
表示。None
不能理解为0
,因为0
是有意义的,而None
是一个特殊的空值。
5./
除法计算结果是浮点数
还有一种除法是//
,称为地板除
2.字符串与编码
1. 在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件
2.由于Python的字符串类型是str
,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str
变为以字节为单位的bytes
。Python对bytes
类型的数据用带b
前缀的单引号或双引号表示
3.以Unicode表示的str
通过encode()
方法可以编码为指定的bytes,
反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes
。要把bytes
变为str
,就需要用decode()
方法。如果bytes
中只有一小部分无效的字节,可以传入errors='ignore'
忽略错误的字节:
b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
4.由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
总结: (1)计算机是美国人发明的,因此最初美国人把所有128个符号编码为ascii,包括字母,“?”等。每个ascii占一个字节8位。
(2)为了将全世界语言统一化,收录进计算机,因此产生了unicode。2个字节。
(3) 如果整篇文章全部英文,用16位unicode岂不是很浪费空间?因此产生了utf-8编码(可变长的),英文用8位,中文用16位到32位,1~6字节。
用到网络层通信,unicode都需要转化成bytes。字节为单位。Unicode表示的
str
通过encode()
方法可以编码为指定的bytes
,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes
。要把bytes
变为str
,就需要用decode()
方法。
3.List与tuple
区别:tuple和list非常类似,但是tuple一旦初始化就不能修改
1.List是一个可变的有序表,所以,可以往list中追加元素到末尾。
classmates.append('Adam')
2.也可以把元素插入到指定的位置,比如索引号为1
的位置:
>>> classmates.insert(1, 'Jack')
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
3.要删除list末尾的元素,用pop()
方法,要删除指定位置的元素,用pop(i)
方法,其中i
是索引位置:
4.Dict与set
1.避免key不存在的错误,有两种办法,一是通过in
判断key是否存在:
>>> 'Thomas' in d
False
要删除一个key,用pop(key)
方法,对应的value也会从dict中删除.
2.set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}
通过add(key)
方法可以添加元素到set中,可以重复添加,但不会有效果.
通过remove(key)
方法可以删除元素.
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}