python进阶学习笔记

      本文主要介绍了在python的进阶学习过程中一些主要需要掌握的知识。所谓语言都是相通的,python中的很多思想,java语言中也同样支持。相比于java这种静态语言,python是一种动态语言,它的编码速度快,并且更容易适应不同的运行环境。动态语言和静态语言的区别之后再做讨论,这里先继续学习python的相关知识。

    Python支持的函数式编程:

        不是纯函数式编程:允许有变量

        支持高阶函数:函数也可以作为变量传入

        支持闭包:有了闭包就能返回函数

        有限度地支持匿名函数

    高阶函数:能接收函数做参数的函数

       (1)变量可以指向函数;

       (2)函数名其实就是指向函数的变量;

       (3)函数的参数可以接收变量;

       (4)一个函数可以接收另一个函数作为参数;

    Python的装饰器:

         问题:定义了一个函数后,想在运行的时候动态的增加功能,又不想改变函数本身的代码?

         想到用高阶函数,可以接收函数作为参数,可以返回函数,能不能编写一个高阶函数是否可以接收一个函数,对其封装,然后返回一个新函数?

    如何调用这个装饰器?

        第一种:

        第二种:

      用这种方法f1的原始定义函数被彻底隐藏了。

      Python内置的@语法就是为了简化装饰器调用:

    装饰器的作用:

        ▷  可以极大地简化代码,避免每个函数编写重复性代码。

          打印日志:@log

          检测性能:@performance

          数据库事务:@transaction

          URL路由:@post(‘/register’)

    Python中模块和包的概念:

        将所有代码放入一个py文件:无法维护。

        如果将代码分拆放入多个py文件中,好处:易于维护,同一个名字的变量互不影响。

    如何在一个模块中引用其他模块呢?

        解决模块名冲突的方法:把通明模块放入不同的包中。

        引用一个完整的模块名:

    如何区分包和普通目录呢?

        在Python中,包下面必须有个__init__.py这个特殊文件。(每层都要有)

    如何安装Python的第三方模块?

        模块管理工具:1.easy_install 2.pip(内置)

        命令:pip install 要安装的模块。

    Python面向对象编程:

        面向对象编程是一种程序设计的范式,它把程序看做是不同对象的调用。

        面向对象是对现实世界建立的对象模型。

        基本思想:类和实例

        类用于定义抽象的类型,而实例是根据类的定义被创建出来。

        最重要的思想就是数据封装

    Python中类的继承:

    继承:(1)新类不必从头编写;

              (2)新类从现有的继承,就自动拥有了现有类的所有功能;

              (3)新类只需编写现有类缺少的功能。

    继承的好处:

             (1)复用已有的代码;

            (2)自动拥有现有类的所有功能;

            (3)只需要编写缺少的新功能。

    继承的过程图:

    继承的特点:子类和父类是is关系;

    Python的继承特点:

            (1)总是从某一个类继承,如果没有合适的类,从object继承;

            (2)不要忘记调用super().__init__方法,它是用来初始化父类的;

    Python中的多态和多重继承:

        多态:类具有继承关系,并且子类类型可以向上转型看作父类类型。例如:如果从person类派生出student和teacher,并且都有whoAmI()方法,在一个函数中,如果接受一个变量X,则无论该X变量是person、student还是teacher,都可以正确打印出结果。这种行为成为多态,也就是说,方法调用将作用在X的实际类型上。S是student类型,它实际上拥有自己的whoAmI ()方法以及从person继承的whoAmI ()方法,但调用s. whoAmI ()总是先查找它自身的定义,如果没有定义,则顺着继承向上查找,直到在某个父类中找到为止。

        实现多态的例子:


    多重继承:除了从一个父类继承外,python允许从多个父类继承。

    多重继承的目的是从两种继承树中分别选择并继承子类,以便组合功能使用。

    举个例子:Python的网络服务器有TCPServer、UDPServer、UnixStreamServer、UnixDatagramServer,而服务器运行模式有 多进程ForkingMixin 和 多线程ThreadingMixin两种。

    要创建多进程模式TCPServer:

    要创建多线程模式UDPServer:

    如果没有多重继承,要实现上述所有可能需要8个子类。

    多重继承的例子:

    Python中的特殊方法:

        比较print的结果:

         如果对一个list进行print,会得到lst的内容,例如:

         如果对一个实例进行print,会得到一个字符串,例如:

     Python是如何把任意变量变成str?

        答:因为任何问题的实例都有一个特殊方法:__str__()。

     Python定义的特殊方法:

        ▷  用于print的__str__方法

          用于len的__len__方法

          用于cmp的__cmp__方法

    Python特殊方法的特点:

        ▷  特殊方法定义在class中

        ▷  不需要直接调用

        ▷  Python的某些函数或操作符会调用对应的特殊方法

     正确实现特殊方法:

        ▷  只需要编写用到的特殊方法

        ▷  有关联性的特殊方法都必须实现

    Python中的__call__:

        一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__。

下一步的学习内容:

        Python中的IO编程:文件和socket

        Python中实现多任务:进程和线程

        Python中的数据库编程

        Python中的web开发

猜你喜欢

转载自blog.csdn.net/qq_34611579/article/details/80804172