Python脚本语言开发

递归函数

  1. 概念:函数定义中调用函数自身 的方式称为递归 (recursion),即在运行过程中自己调用自己。

  2. 每次函数调用时,函数参数会临 时存储, 相互没有影响 ;

  3. 达到终止条件时,各函数逐层结束运算,返回计算结果;

  4. 要注意终止条件的构建,否则递归无法正常返回结果

匿名函数

  1. 匿名函数适用于调用次数少且能够在一行内表达的简单函数情况,使代码看起来更为“优雅” ,还可以避免函数名冲突的问题;常常与其他函数联用,作为函数的参数进行传递

  2. lambda与def的比较

    1. lambda创建函数无须函数名,def创建函数必须有函数名;
  3. lambda返回一个函数对象,而不是返回表达式的值,赋值给变量时相当于起名,而def定义的函数可将返回值赋值给变量;

    1. lambda只适用于单行的表达式函数体,而def可以定义复杂的复合语句函数体;
  4. lambda函数不能共享给别的程序调用,而def定义的函数可以。

高阶函数

  1. 变量可以指向函数 —> 函数名其实是指向函数的变量 —> 函数本身可以赋值给变量 —> 函数的参数能接收变量 —>一个函数可以接收另一个函数作为参数

  2. 知识了解:高阶函数是函数式编程的体现;函数式编程是一种高抽象度的编程范式,其特点就包括允许把函数本身作为参数传入另一个函数,并允许返回一个函数

  3. 内置高阶函数——map(func, *iterables)

    1. 根据提供的函数对指定的序列做映射。第一个参数

      接收一个函数名,后面的参数接收一个或多个序列、支持迭代

      的容器或迭代器。调用map函数时,函数func会作用于

      iterables中的每一个元素,最后返回一个map对象

  4. 内置高阶函数——filter(function or None, iterable)

    1. 对指定序列执行过滤筛选操作。第一个参数可以是函数名或None,第二个参数类似map()规则但只能有一个。filter()会将传入的函数依次作用于iterable中的每一个元素,然后根据返回值是True或False决定保留与否,最后返回一个filter对象。如果第一个参数是None,则返回为真的项。
  5. 内置高阶函数——sorted(iterable, key=None, reverse=False)

    1. 对可迭代对象进行排序(默认为升序)操作,返回一个排序后的新列表。可以传入key函数来实现自定义排序,reverse设置为True表示降序。
  6. 内置高阶函数——unctools.reduce(function, sequence[, initial])

    1. 对参数序列中的元素进行累积,返回为一个值。第一个参数是有两个参数的函数,第二个参数是指定的可迭代对象,第三个参数为可选参数,表示初始值。工作过 程:首先把 sequence中的前两个元素传给函数function,经函数处理后,再把计算所得结果与sequence的第三个元素作为新的参数传给函数,以此类推,最后返回一个值。

闭包与修饰器

  1. 在嵌套函数中,如果内部函数引用了外部作用域

    (非全局作用域)的变量,则这个内部函数就称为闭包,

    又称闭包函数。形成闭包有三个条件:

    1. 存在于嵌套关系的函数中
    2. 内部函数引用了外部函数的变量
    3. 外部函数将内部函数名作为返回值