基础知识

1. 对象分类

  可更改:list、dict、set

  不可更改:strings、tuples、numbers、

2. python自省

  自动获得对象的类型,比如:type、dir、getattr、hasattr、isinstance

3. 列表-字典推导式

  字典推导式:d = {k: v for k, v in dic} 

4. 单双下划线

  单:指定私有变量

  双:区别和其他类相同的命名,访问:对象名._类名_***

5. 迭代器和生成器

  迭代器:列表生成式;数据结构:列表;占用大量内存空间;

  生成器:数据结构:生成器;边循环,边计算;

6. 装饰器

  抽离出大量函数中与函数功能本身无关的雷同代码并继续重用;为已经存在的对象添加额外的功能;

  适用:插入日志、性能测试、事务处理等

7. 新式类和旧式类

  新式类:继承依据C3

  旧式类:深度优先

8. 单例模式

  保证系统中一个类只有一个实例且该实例易于外界访问,方便地控制实例的个数并节约系统资源。

  8.1 __new__方法

1 class Singleton(object):
2     def __new__(cls, *args, **kw):
3         if not hasattr(cls, '_instance'):
4             orig = super(Singleton, cls)
5             cls._instance = orig.__new__(cls, *args, **kw)
6         return cls._instance
7 
8 class MyClass(Singleton):
9     a = 1

  8.2 共享属性-所有实例的__dict__指向同一个字典

1 class Borg(object):
2     _state = {}
3     def __new__(cls, *args, **kw):
4         ob = super(Borg, cls).__new__(cls, *args, **kw)
5         ob.__dict__ = cls._state
6         return ob
7 
8 class MyClass2(Borg):
9     a = 1

  8.3 装饰器版本

 1 def singleton(cls):
 2     instances = {}
 3     def getinstance(*args, **kw):
 4         if cls not in instances:
 5             instances[cls] = cls(*args, **kw)
 6         return instances[cls]
 7     return getinstance
 8 
 9 @singleton
10 class MyClass:
11   ...

  8.4 import

 1 # mysingleton.py
 2 class My_Singleton(object):
 3     def foo(self):
 4         pass
 5 
 6 my_singleton = My_Singleton()
 7 
 8 # to use
 9 from mysingleton import my_singleton
10 
11 my_singleton.foo()

9. GIL

  线程全局锁:为了保证线程安全而采取的独立线程运行的限制。

  IO密集型:多线程

  CPU密集型:多线程的优势不大,会因争夺资源而变慢

  解释多线程为什么慢:https://www.oschina.net/translate/pythons-hardest-problem

10. 协程

  用户自己控制切换的时机,不需要陷入系统的内核态。比如:yield

11. 函数式编程 + lambda

  filter:过滤

  map:对一个序列的每一项一次执行函数

  reduce:对一个序列的每一项迭代调用函数

12. 拷贝

  浅拷贝:拷贝对象的引用和值,原值修改后新值不会改变外层元素;

  深拷贝:拷贝所有的值,原值修改后不会影响新值;

13. 垃圾回收

  引用计数:有循环引用的缺点

  标记-清除:按需分配,遍历以对象为节点、引用为边的图,清除没标记的对象;

  分代技术:以空间换时间,索引数越大,对象存活时间越长。

  

  

posted @ 2020-04-11 16:42  ~花开不败~  阅读(117)  评论(0编辑  收藏  举报