python高级1-4章
python高级编程和异步io并发编程
第一章
- 导学
- python进阶方法
- 阅读(库和框架)源码
- 优化代码
 
- 目标:python高级和并发编程
- 方法:功能---原理---应用案例
- 课程安排:元类、多线程、多进程、异步IO、asyncio---重要
 
- python进阶方法
- 开发环境配置
第二章(一切皆对象)
- 
python中一切皆对象 - 
动态语言和静态语言的区别 - python面向对象更加彻底
 
- 
函数、类(模板对象)都是对象,属于python的一等公民 - 可以赋值给一个变量
- 可以添加到集合对象中
- 可以作为参数传递给函数
- 可以当做函数的返回值(装饰器)
 
 
- 
- 
type、object和class之间的关系 - 
通过它们理解python中一切皆对象 
- 
一切都是继承自object 
- 
可以通过tpye()生成类对象 - 
type--int--1即:type--class(int、str等)--obj 
- 
# 查看一个类的基类 类.__bases__
 
- 
- 
object是最顶层的基类,它没有基类 
- 
type本身是一个类,同时也是一个对象 
 
- 
- 
python中的内置对象类型 - 对象的三个特征:
- 身份---id,可以理解为内存中的指针,查看ID----id(obj)
- 类型,python中不用指定类型
- 值---value,1使用int类型封装,使用a变量指向1对象
 
- None对象(全局只有一个)
- 数值: int/float
- 迭代类型
- 序列类型:list、range、tuple、str、array(数组)
- 映射类型:dict
- 集合:set(效率高)、forzenset
- 上下文管理类型:with语句
- 其他:模块类型、class和实例、函数类型、方法类型、代码类型、object类型、type类型、ellipsis类型、notimplemented类型
 
- 对象的三个特征:
- 
小结 - python过于灵活,没有静态语言的编译过程,不够严谨。
- 可以串联python知识点。
 
第三章(魔法函数)
- 
什么事魔法函数 - 
# 定义此魔法函数,对象就变成可迭代对象 __getitem__(self,item)
 
- 
- 
python中的数据模型,以及数据模型对python的影响 - 魔法方法的调用时隐式的,会自己调用,不用主动调用
- len(obj),会首先调用类中的__len__,如果没有定义,就是调用__getitem__
 
- 
python魔法函数(贯穿于整个python学习) - 
非数学运算 - 
# print(对象)会调用__str__ # 直接调用对象时,会调用__repr__
 
- 
- 
jupyter简单的打开方法: pip3 install -i https://pypi.douban.com/simple notebook ipython notebook
 
- 
- 
len函数的特殊性 - 如果统计list、set、dict等内置类型,速度会非常快,这些类型是c语言写出来的,不会去遍历,会直接读取长度。
 
- 
小结 - 认识魔法函数、名称都是固定的,隐式调用
 
第四章(深入对象和类)
- 
鸭子类型和多态 - 所有的类或对象都实现了一个共同的方法,方法名要一样,这些类可以归为同一种类型,这样就可以同时调用这些类的方法。
- extend(),接受的是可迭代类型,只要可迭代就行。
 
- 
抽象基类 - 抽象基类不能实例化
- 不建议使用抽象基类,建议使用 isinstance
 
- 
isinstance和type的区别 - type 无法找出继承关系
 
- 
类变量和对象变量 - 类变量和对象变量是独立的
 
- 
类属性和实例属性以及查找顺序 - 
由下而上 
- 
属性查找顺序按照C3算法 
- 
如何查看属性查找顺序 # 查看查找顺序 print(A.__mro__)
 
- 
- 
静态方法、类方法、对象方法以及参数 - 使用最多的就是静态方法
- 静态方法,可以预处理传入的数据,可以在其中创建实例对象,并返回。缺点:更改类名时需要更改静态方法返回对象
- 类方法,可以预处理传入的数据,优势:不用担心类名更改。
 
- 
数据封装和私有属性 - 
实例的私有属性不允许外部访问,允许实例方法访问 
- 
非要访问:实例对象.类名__私有属性 print(user._User__birthday)
 
- 
- 
python对象的自省机制 - 
自省是通过一定的机制查询到对象的内部结构 # 通过__dict__查询属性,返回的是字典,如果没有就报错 print(user.__dict__) # 赋值 user.__dict__['name']='tom' # 通过dir()查看对象的属性,返回键的列表,没有值
 
- 
- 
super函数 - super执行顺序不是调用父类,而是按MRO算法调用
- print(obj.__mro__)可以查看obj对象的父类调用顺序。两种可能:广度优先,深度优先。
 
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号