迷失补缺
1.Python内部字符串一般都是Unicode编码,代码中字符串额默认编码与代码文件本身的编码是一致的,所以要做一些编码转换通常要以Unicdoe作为中间编码进行转换,即将其他编码的字符串解码(decode)成Unicode,再从Unicode编码(encode)成另一种编码
a.每8个位(bit)组成一个字节(byte)
C.一个英文占用一个字节,也就是8个位。一个中文占用两个字节。
D.一般位简写为小写字母“b”,字节简写为大写字母“B”.
E.8bit=1Byte 1024Byte=1KB 2014KB=1MB 1024MB=1GB 1024GB=1T
isinstance(s, unicode) 检测是否为Unicode,如果是就返回True,不是就返回Flase
utf-8 : 3byte表示中文,1byte表示英文 1.内存固定使用unicod编码,unicode效率高 2个字节来表示 ,空间换时间 2.使用寿命编码往硬盘存,就用寿命编码去读 3.程序运行分两个间断, a,从硬盘读到内存 b.python解释器运行已经独到的内存的代码 1、python2里的 str bytes 没有明确区分,bytes 其实就是二进制流的格式 只有Unicode 有encode方法,python3里内存的数据都是unicode格式
2.
3. 区分
4.Python 字典(Dictionary) setdefault() 函数和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值。
dict.setdefault(key, default=None)
5.str.format()方法
>>greens= dict(green=“#00800",olive="#80800",lime="#00FF00") >> print("{green}{olive}{lime}".format(**greens)) #这里使用了映射拆分(**),个人理解也就是类似于非固定参数中的**kwargs #00800 #80800 #00FF00
6.字典内涵: 是一个表达式,同时也是一个循环如 file_sizes = {name:os.path.getsize(name) for name in os.lisdir(".")}
7.浅copy:复制的只是对象的引用,而非对象本身 dicet.copy() set.copy()
深copy: 是对象引用的复制 生成一份新的 copy.deepcopy()
8.在反射运用中hasattr方法,是不能反射类的私有方法
9.lambda:函数通常用作key函数,或者用于函数必须作为参数传递的其他上下文中.
10.在对方法调用的时候,Python会自动提供第一个参数,---这个参数是对 对象自身的对象引用,我们必须在参数列表中包含这一参数,根据约定,这一参数称为self.
所有的对象属性及方法属性,都必须由self进行限定,
11.在创建对象时(比如:P= Shape.Point()) ,其实内部是,首先调用特殊方法__new__()来创建该对象,之后在调用特殊方法__init__() 对其进行初始化.
另外,执行上面语句后,Python会从Point.__new__()方法开始,由于我们没有重新实现这一方法,因为会在Point基类中搜索,
12.子类继承父类的时候。需要super().__init__函数, 因为以这种方式调用super()函数的效果是调用父类的__init__()方法.
13.
请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的。
和list比较,dict有以下几个特点:
- 查找和插入的速度极快,不会随着key的增加而变慢;
- 需要占用大量的内存,内存浪费多。
而list相反:
- 查找和插入的时间随着元素的增加而增加;
- 占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法