基础知识
"Python内存管理"
从三个方面:1引用计数机制、2垃圾回收机制、3内存池机制
引用计数
python内部使用引用计数、来保持追逐内存中的对象、所有对象都有引用计数
引用计数增加:一个对象分配新名称时、将其放入容器中时、
引用计数减少:使用del语句删除对象别名时、引用超出作用域或重新赋值、
`sys.getrefcount()`可以获取对象当前的引用计数
垃圾回收
当一个对象的引用计数为零时、它将被垃圾收集机制处理掉
当两个对象循环引用时、引用计数归零、对象也没有销毁、会导致内存泄露、解释器会定期执行一个循环检测器、搜索不可访问对象的循环并处理掉。
内存池机制
python将不用的内存放到内存池中而不是返回给操作系统、
python内存池机制用于管理小块内存的申请和释放、
python中所有小于256字节的对象都使用内存池机制实现分配器
python对象都有独立的私有内存池、对象间不能共用他们的内存池
[一等对象]、函数、方法 、实例方法、类的方法、静态方法、不可变类型、不可变类型、
[高阶函数]、匿名函数、钩子函数、回调函数、注册函数、函数式编程、函数内省、装饰器、闭包、函数属性、递归、通用函数、
[序列类型]、不可变序列类型、可变序列、容器序列、扁平序列、可散列数据类型、切片、拆包 、
[数据类型]:范围、列表、元组、字典、集合、冻结集合、字典视图、字典变种、
[面向对象]、类、对象、方法、继承、封装、模块、
[位置参数]、关键字参数、形参、实参、参数的默认值、变量、对象、PEP8、python、帮助、==和is的区别、函数返回值类型、上下文管理器、可调用对象、局部变量、全局变量、全局作用域、函数作用域、
[特殊方法]、global、nolocal、del、`__slots__`、`__add__`、`__eq__`、`__xxx__`、`__main__、__name__、字符串拼接、tuple()、list()、dict()、range()、set()`、特殊方法一览、内置类、内置函数、
[相关模块]、functools、operator、itertools、conllections、json、urllib、requests、、、
[可迭代对象]()、运算符、迭代器、生成器、列表推倒式、生成器表达式、字典推到式、 yield、反射、
PyChecker、内存管理、profile性能分析
enumerate 、字典/集合生成、强制浮点除法、eval函数、literal_eval、ast、
字符串/数列 逆序`[::-1]`、三元运算、copy、
pydoc、doctest、unittest、trace、pdb、profile, timeit、compileall、
包管理、函数unpack、链式比较操作符、函数的默认参数、
isinstance可以接收一个元组、用切片来删除序列的某一段、
JSON编码器和解码器
json.dump()、json.dumps()、json.load()、json.loads()
str、skipkeys、ensure_ascii、check_circular、
allow_nan、indent、separators、default、sort_keys
urllib.parse 将URL解析为组件
scheme、netloc、path、params、query、fragment、username、password、hostname、port
URL解析:urlparse、urlunparse、urlsplit、urlunsplit、urljoin、urldefrag、parse_qs、parse_qsl
网址引用:quote、quote_plus、quote_from_bytes、unquote、unquote_plus、unquote_to_bytes、urlencode
结构化解析结果:DefragResult、ParseResult、SplitResult、DefragResultBytes、ParseResultBytes、SplitResultBytes
解析ASCII编码字节:
collections - 容器数据类型
namedtuple、deque、ChainMap、Counter、OrderedDict、defaultdict、UserString、UserList、UserDict
[^^^]()defaultdict、dict子类、default_factory
[^^^]() OrderedDict、 dict子类、popitem 、move_to_end
[^^^]() ChainMap、 MutableMapping 子类、maps、new_child、parents
[^^^]() Counter、dict子类、elements、most_common 、subtract 、fromkeys 、update
[^^^]() namedtuple、工厂函数、_make 、_asdict 、_replace 、_fields 、_fields_defaults
[^^^]() deque、`append `、`appendleft `、`clear `、`copy `、`count `、`extend `、`extendleft `、`index `、`insert `、`pop `、`popleft `、`remove `、`reverse `、`rotate `、`maxlen `
精通内容
profile性能分析、熟悉语法以及原声数据结构、熟悉基本实现中的性能特点,就是知道什么操作会慢
会使用profile以及基于profile的性能分析工具、会使用运行时编译和静态编译的工具。
pypy,numba,cython,ctypes,original C/C++ extension
熟悉你所在领域的拓展库,比如我,科学计算方面的库不要太多,numpy衍生出来的一大堆大堆
了解基本的编译过程,基本的操作系统知识(只要你C、C++学的还行就可以了)
要想精通python,写的代码首先得pythonic
研读牛B的开源代码,在这过程中会遇到python的许多高阶用法
理解装饰器,生成器,描述符,元类
掌握list comprehension,
多用内置函数:map,reduce,filter,iter,range,divmod,round,chr,enumerate,all,any,slice,zip+