廖雪峰老师Python教程读后笔记

廖老师网站:http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

花几天时间看了廖老师的python教程,现在总结一下。

(本人用python工作了一年半,有一定python基础,看过《python核心编程》与部分《python源码剖析》,只把自己觉得有用的记一下)


 

  • 高级特性

    1. 切片,对list和tuple而言

    2. 生成器yield,协程用到,用于异步

    3. 迭代器Iterable(可作用于for),其中,生成器是Iterator对象(可作用于next),但listdictstr虽然是Iterable,却不是Iterator

  • 函数式编程

    1. 高阶函数,一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数(map、reduce、filter、sorted...)

    2. 装饰器,在代码运行期间动态增加功能,使用'@函数名'

    3. 偏函数,可用functools.partial创建

  • 面向对象高级编程

    1. __slots__,限制类实例能添加的属性,也能降低类实例所占内存

    2. @property,神奇的装饰器方法

    3. metaclass元类,可定制类,如果你不懂证明还用不上,type()可创建类

  • 调试与测试

    1. 调试,最低级print,其次断言(assert),最好用logging、pdb(pdb.set_trace())或类似方法

    2. 测试,单元测试(unittest)和文档测试(doctest)

  • 进程和线程

    1. 多进程,os.fork()linux的少用到;multiprocessing,Process创建进程,Pool创建进程池,subprocess创建子进程,QueuePipes进程间通信

    2. 多线程,threading,用Lock作锁;Python解释器由于设计时有GIL全局锁,导致了多线程无法利用多核

    3. ThreadLocal,解决了参数在一个线程中各个函数之间互相传递的问题

    4. 分布式进程,multiprocessing.managers.BaseManager

  • web开发

    1. HTML是一种用来定义网页的文本,用于编写网页;HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信

    2. HTML定义了页面的内容,CSS来控制页面元素的样式,而JavaScript负责页面的交互逻辑

    3. WSGI:Web Server Gateway Interface,接收HTTP请求、解析HTTP请求、发送HTTP响应的接口

    4. web框架,让我们从WSGI处理函数转移到URL+对应的处理函数,把wsgi抽象出来;python常用的web框架有django、tornado、flask

    5. 使用模板MVC,提高编程效率

  • 异步IO

    1. Coroutine 协程,效率高、不需要锁机制,python中使用生成器yield实现

    2. asyncio,提供了完善的异步IO支持(asyncawait,针对coroutine的新语法)

    3. aiohttp,基于asyncio实现的HTTP框架
原文地址:https://www.cnblogs.com/GO-NO-1/p/6500912.html