网络编程
- 四层/七层:
- ip-主机。端口-要运行的程序
- udp:不用连接,速度快,但数据不保证完整
- tcp:
需要连接与监听,速度稍慢,数据完整
可能发生粘包
进程和线程
- 进程
from multiprocessing import Process - 进程池
pool = Pool(3)
pool.apply(func) - 进程间通信
通过processing-Queue、Manager-Queue、Pipes等 - 线程
threading
创建(三种方式):直接调用、重写run、继承
ThreadLocal声明全局变量,解决线程间数据混乱的问题
Lock上锁,上锁后程序实际上是以单线程运行,效率变低
守护线程:
不重要的线程,t.setDaemon(True)
高级语法
生成器
generator,惰性机制,需要时才取出,占内存少
- 创建
1.列表生成式[]改为()
2.定义函数,yield - 获取
1.while,捕捉异常停止
2.for循环
迭代器
iterator
iterable
可迭代对象转迭代器iterator = iter(iterable)
判断迭代isinstance(xx,iterable)
装饰器
- 闭包
三个条件 - 装饰器
拓展已有函数的功能的函数
语法糖+闭包
@闭包函数
深拷贝与浅拷贝
- =
- copy:浅拷贝,复制第一层元素,对于其子对象只拷贝其引用,不拷贝其元素
- deepcopy:深拷贝,复制全部元素,包括其子对象中的元素。
元类
- 动态创建类
type("class", parent_class, {})
- 自定义元类
1.定义函数返回动态创建类的参数"class", parent_class, {}
2.调用class Person(object, metaclass=re_attr)
垃圾回收
语法错误和运行异常
面向对象
- 封装、继承、多态
- 类属性类方法、实例属性实例方法(self)
- 访问级别
- 封装:props
- 继承,多继承
- 多态:python多态、类中方法多态(重写)
__eq__
:用==时比较魔法方法的返回值- 单例模式:类仅能创建唯一的实例对象id
- 工厂模式:
文件io
- json:明文存储
- pickle、marshal:二进制
用for循环写入
读取时要先知道存储的数量
函数高级
- 匿名函数
lambda 参数: 方法
- map()
# map(函数,x,y)-->映射关系的结果序列
list1 = [1, 2, 3, 4, 5, 6, 7]
list2 = ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]
print(list(map((lambda x, y: (x, y)), list1, list2)))
# [(1, '一'), (2, '二'), (3, '三'), (4, '四'), (5, '五'), (6, '六'), (7, '七')]
- reduce()
# 累加,返回值为累加结果
from _functools import reduce
list1 = [1, 2, 3, 4, 5, 6]
print(reduce(lambda x, y: x + y, list1))
- 偏函数partial
f = functools.partial(func, 参数)
- 递归
自己调用自己
必须有明确的出口
模块
- 模块的调用