• 《流畅的Python》读书笔记


    第一部分:序幕

    第1章:Python数据模型

    通过实现特殊方法,自定义数据类型可以表现得和内置类型一样;

    __repr__方便调试和记录日志,__str__方便用户看;

    序列数据类型特殊方法使用最多;


    第二部分:数据结构

    第2章:序列构成的数组

    系列类型可分为 可变和不可变、扁平序列和容器序列;

    列表推导生成器表达式提供了灵活构建和初始化序列的方式;

    元组、切片、array.array、collections.deque。。。

    第3章:字典和集合

    字典算是Python的基石;除dict外,有其他好用的如defaultdict、OrdereDict、ChainMap、Counter(属于collections模块);

    映射类型两个方法:setdefault、update

    映射类型API中:__missing__

    dict、set背后的散列表效率很高;

    第4章:文本和字节序列

    一个字符不等于一个字节;

    二进制数据类型:bytes、bytearray、memoryview;UnicodeEncodeError、UnicodeDecodeError、SyntaxError;


    第三部分:把函数视作对象

    第5章:一等函数

    把函数赋值给变量、传给其他函数、存储在数据结构中、访问函数的属性;

    高阶函数、列表推导、规约函数;

    python有7中可调用对象,从lambda表达式创建的简单函数到实现__call__方法的类实例;

    第6章:使用一等函数实现设计模式

    可使用一等函数简化模式实现;

    第7章:函数装饰器和闭包

    参数化装饰器基本上都涉及至少两层嵌套函数;

    要理解装饰器,需要区分导入时和运行时、知道变量作用域、闭包和新增的nonlocal声明;


    第四部分:面向对象惯用法

    第8章:对象引用、可变性和垃圾回收

    每个Python对象都有标识、类型和值;

    变量保存的是引用;

    CPython中对象的引用计数归零后会被立即销毁;

    第9章:符合Pyhton风格的对象

    简洁胜于复杂;

    使用__slots__节省内存;

    要构建符合Python风格的对象,就要观察真正的Python对象;

    第10章:序列的修改、散列和切片

    myseq[a:b:c]原理:创建slice(a, b, c)对象,交给__getitem__方法处理;

    模仿Python标准对象行为;

    第11章:接口:从协议到抽象基类

    抽象基类动态特性:虚拟子类、使用__subclasshook__方法动态识别子类;

    第12章:继承的优缺点

    内置类型的原生方法使用C语言实现,不会调用子类中覆盖的方法,极少数例外;

    多重继承是双刃剑;__mro__类属性中蕴藏方法解析顺序;

    第13章:正确重载运算符

    进制重载内置类型的运算符,而且限于重载现有的运算符(is、and、or、not例外);


    第五部分:控制流程

    第14章:可迭代对象、迭代器和生成器

    iter函数;

    第15章:上下文管理器和else模块

    上下文管理器和with:管理文件,其他用途、、

    contextlib模块里的函数,@contextmanager装饰器

    第16章:协程

    通过客户调用.send(...)方法发送数据或使用yeild from结构驱动的生成器函数;

    第17章:使用期物处理并发

    concurrent.futures,asyncio.Future;

    多线程和多进程并发的底层实现;

    第18章:使用asyncio包处理并发

    使用yeild from、协程、期物和asyncio时间循环做并发编程;


    第六部分:元编程

    第19章:动态属性和特性

    动态属性编程;

    使用特性处理删除属性;

    第20章:属性描述符

    托管属性和存储属性;

    描述符类与使用函数式编程方式构建的特性工厂函数;

    第21章:类元编程

    类元编程指动态创建类或定制类;

    抽象基类、元类;

  • 相关阅读:
    poj 3468 A Simple Problem with Integers
    Autolayout约束动画化-Animating Autolayout Constraints
    HDU 1325 POJ 1308 Is It A Tree? (并查集)
    java小游戏代码
    《大话操作系统——做坚实的project实践派》(5)
    关于mysql存储过程创建动态表名及參数处理
    LeetCode Remove Duplicates from Sorted Array II
    centos 7安装 navicat
    Zxing二维码扫描
    Android adb shell学习心得(四)
  • 原文地址:https://www.cnblogs.com/GO-NO-1/p/7598896.html
Copyright © 2020-2023  润新知