廖老师网站: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框架

廖雪峰老师Python教程读后笔记的更多相关文章

  1. 进程 vs. 线程(python的协程)(转廖雪峰老师python教程)

    我们介绍了多进程和多线程,这是实现多任务最常用的两种方式.现在,我们来讨论一下这两种方式的优缺点. 首先,要实现多任务,通常我们会设计Master-Worker模式,Master负责分配任务,Work ...

  2. python 协程(单线程中的异步调用)(转廖雪峰老师python教程)

    协程,又称微线程,纤程.英文名Coroutine. 协程的概念很早就提出来了,但直到最近几年才在某些语言(如Lua)中得到广泛应用. 子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在 ...

  3. 【廖雪峰老师python教程】——进程与线程

    多进程 操作系统轮流让各个任务交替执行,任务1执行0.01秒,切换到任务2,任务2执行0.01秒,再切换到任务3,执行0.01秒……这样反复执行下去.表面上看,每个任务都是交替执行的,但是,由于CPU ...

  4. 【廖雪峰老师python教程】——IO编程

    同步IO 异步IO 最常见的IO——读写文件 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一 ...

  5. 【廖雪峰老师python教程】——错误和调试

    错误处理 try...except...finally...机制 try: print('try...') r = 10 / 0 print('result:', r) except ZeroDivi ...

  6. 【廖雪峰老师python教程】——OOP

    概述 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 数据封装.继承和多态 ...

  7. 【廖雪峰老师python教程】——模块

    使用模块 任何模块代码的第一个字符串都被视为模块的文档注释: 使用__author__变量把作者写进去,这样当你公开源代码后别人就可以瞻仰你的大名: 当我们在命令行运行模块文件时,Python解释器把 ...

  8. 【廖雪峰老师python教程】——装饰器

    装饰器 # 一个函数装饰器的列子 def log(func): def wrapper(*args,**kwargs): print('Name=%s'%func.__name__) return f ...

  9. 【廖雪峰老师python教程】——filter/sorted

    filter Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函数依次作用于每个元素,然 ...

随机推荐

  1. [Jmeter并发报错解决方案]org.apache.http.NoHttpResponseException: 10.0.4.147:8000 failed to respond

    背景:公司模型框架是Nginx+uwsgi+Django+nginx,一开始使用Jmeter进行高并发请求测试,发现成功率只有50%,换用postman,成功率100%,代码进行高并发一样不会报错. ...

  2. 【原创】MyEclipse反编译添加jadclipse_3.3.0 曲折的完美解决

    本人QQ:9715234 (java屌丝一枚) 共三部分 一.下载两个文件exe和jar 1.http://nchc.dl.sourceforge.net/project/jadclipse/jadc ...

  3. uvaoj 133 - The Dole Queue(逻辑,环形队列数数)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  4. Selenium(Python) ddt读取MySQL数据驱动

    import unittestfrom time import sleep from ddt import ddt, datafrom pymysql import connectfrom selen ...

  5. 初学Direct X(8) ——碰撞检测

    初学Direct X(8) --碰撞检测 真正让一个游戏鹤立鸡群的是程序对碰撞的响应有多好,这里介绍两种检测的方法: 1) 基于边框的碰撞检测 2) 基于距离的碰撞检测 1. 基于边框的碰撞检测 1. ...

  6. 互联网行业求职课-教你进入BAT

    互联网行业求职课--教你进入BAT 课时1. 课程内容介绍.导师介绍.服务安排和介绍等 课时2. 互联网行业.职业选择指导 互联网公司选择: 大公司:收获:大平台,系统思维,系统培训,系统性的发展,薪 ...

  7. 机器学习介绍(introduction)-读书笔记-

    一,什么是机器学习 第一个机器学习的定义来自于 Arthur Samuel.他定义机器学习为,在进行特定编程的情况下,给予计算机学习能力的领域.Samuel 的定义可以回溯到 50 年代,他编写了一个 ...

  8. Grid 网格布局

    CSS 网格布局(Grid Layout) 是CSS中最强大的布局系统. 这是一个二维系统,这意味着它可以同时处理列和行,不像 flexbox 那样主要是一维系统. 你可以通过将CSS规则应用于父元素 ...

  9. php多进程单例模式下的 MySQL及Redis连接错误修复

    前几天写了个php常驻脚本,主要逻辑如下 //跑完数据后休息60秒 $sleepTime = 60; $maxWorker = 10; while (true) { $htmlModel = new ...

  10. SpringBoot日志配置(详解) 涉及控制台输出日志、生成日志文件、日志级别修改、hibernate日志不输出

    写在前面 本篇主要讲述日志配置,看完本篇可以解决下述问题, 控制台输出日志.生成日志文件.日志级别修改.hibernate日志不输出 Git Demo Path:https://github.com/ ...