文章目录
-
-
- [1.*args vs **kwargs区别](#1.*args vs **kwargs区别)
- [2.实例方法 / 类方法 / 静态方法区别](#2.实例方法 / 类方法 / 静态方法区别)
- 3.装饰器的原理
- 4.迭代器和生成器
- 5.上下文管理器with
- 6.slots
- 7.一亿个数找前10最大的数字
- 8.async/await(异步)
-
1.*args vs **kwargs区别
*args位置参数,返回的是一个tuple元组
**kwargs关键字参数,返回的是dict
2.实例方法 / 类方法 / 静态方法区别
实例方法,需要实例化对象,通过对象调用方法
类方法,通过类.方法调用,参数为cls指向子类
静态方法,放在类里面的工具函数
3.装饰器的原理
本质:函数作为参数传入,返回包装后的新函数,可以实现前后置增强
4.迭代器和生成器
迭代器,通过next取值
生成器,用yield写出来的特殊迭代器,保存执行的位置,手写迭代器的话需要自己维护状态,生成器代码简短不易出错
5.上下文管理器with
保证退出一定会做清理和释放,可以理解为是try/finally的语法糖
6.slots
限制类的属性,节省内存,加速访问速度
7.一亿个数找前10最大的数字
小顶堆,堆大小设置为10.
顶部元素为最小元素,当某个元素大于顶部元素,顶部元素弹出,加入这个元素调整堆
8.async/await(异步)
async def:定义协程函数
await:定义一个可等待对象,等待I./O让出控制权给事件循环