python高级1-4章

python高级编程和异步io并发编程

第一章

  1. 导学
    • python进阶方法
      • 阅读(库和框架)源码
      • 优化代码
    • 目标:python高级和并发编程
    • 方法:功能---原理---应用案例
    • 课程安排:元类、多线程、多进程、异步IO、asyncio---重要
  2. 开发环境配置

第二章(一切皆对象)

  1. python中一切皆对象

    • 动态语言和静态语言的区别

      • python面向对象更加彻底
    • 函数、类(模板对象)都是对象,属于python的一等公民

      • 可以赋值给一个变量
      • 可以添加到集合对象中
      • 可以作为参数传递给函数
      • 可以当做函数的返回值(装饰器)
  2. type、object和class之间的关系

    • 通过它们理解python中一切皆对象

    • 一切都是继承自object

    • 可以通过tpye()生成类对象

      • type--int--1即:type--class(int、str等)--obj

      • # 查看一个类的基类
        	类.__bases__
        
    • object是最顶层的基类,它没有基类

    • type本身是一个类,同时也是一个对象

  3. 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类型
  4. 小结

    • python过于灵活,没有静态语言的编译过程,不够严谨。
    • 可以串联python知识点。

第三章(魔法函数)

  1. 什么事魔法函数

    • # 定义此魔法函数,对象就变成可迭代对象
      __getitem__(self,item)
      
  2. python中的数据模型,以及数据模型对python的影响

    • 魔法方法的调用时隐式的,会自己调用,不用主动调用
    • len(obj),会首先调用类中的__len__,如果没有定义,就是调用__getitem__
  3. python魔法函数(贯穿于整个python学习)

    • 非数学运算

      • # print(对象)会调用__str__
        # 直接调用对象时,会调用__repr__
        
    • jupyter简单的打开方法:

      pip3 install -i https://pypi.douban.com/simple notebook
      
      ipython notebook
      
  4. len函数的特殊性

    • 如果统计list、set、dict等内置类型,速度会非常快,这些类型是c语言写出来的,不会去遍历,会直接读取长度。
  5. 小结

    • 认识魔法函数、名称都是固定的,隐式调用

第四章(深入对象和类)

  1. 鸭子类型和多态

    • 所有的类或对象都实现了一个共同的方法,方法名要一样,这些类可以归为同一种类型,这样就可以同时调用这些类的方法。
    • extend(),接受的是可迭代类型,只要可迭代就行。
  2. 抽象基类

    • 抽象基类不能实例化
    • 不建议使用抽象基类,建议使用 isinstance
  3. isinstance和type的区别

    • type 无法找出继承关系
  4. 类变量和对象变量

    • 类变量和对象变量是独立的
  5. 类属性和实例属性以及查找顺序

    • 由下而上

    • 属性查找顺序按照C3算法

    • 如何查看属性查找顺序

      # 查看查找顺序
      print(A.__mro__)
      
  6. 静态方法、类方法、对象方法以及参数

    • 使用最多的就是静态方法
    • 静态方法,可以预处理传入的数据,可以在其中创建实例对象,并返回。缺点:更改类名时需要更改静态方法返回对象
    • 类方法,可以预处理传入的数据,优势:不用担心类名更改。
  7. 数据封装和私有属性

    • 实例的私有属性不允许外部访问,允许实例方法访问

    • 非要访问:实例对象.类名__私有属性

      print(user._User__birthday)

  8. python对象的自省机制

    • 自省是通过一定的机制查询到对象的内部结构

      # 通过__dict__查询属性,返回的是字典,如果没有就报错
      print(user.__dict__)
      # 赋值
      user.__dict__['name']='tom' 
      # 通过dir()查看对象的属性,返回键的列表,没有值
      
  9. super函数

    • super执行顺序不是调用父类,而是按MRO算法调用
    • print(obj.__mro__)可以查看obj对象的父类调用顺序。两种可能:广度优先,深度优先。
原文地址:https://www.cnblogs.com/hui-code/p/12130321.html