课堂笔记22-11-28(Python脚本语言开发)
Python脚本语言开发
递归函数
概念:函数定义中调用函数自身 的方式称为递归 (recursion),即在运行过程中自己调用自己。
每次函数调用时,函数参数会临 时存储, 相互没有影响 ;
达到终止条件时,各函数逐层结束运算,返回计算结果;
要注意终止条件的构建,否则递归无法正常返回结果
匿名函数
匿名函数适用于调用次数少且能够在一行内表达的简单函数情况,使代码看起来更为“优雅” ,还可以避免函数名冲突的问题;常常与其他函数联用,作为函数的参数进行传递
lambda与def的比较
- lambda创建函数无须函数名,def创建函数必须有函数名;
lambda返回一个函数对象,而不是返回表达式的值,赋值给变量时相当于起名,而def定义的函数可将返回值赋值给变量;
- lambda只适用于单行的表达式函数体,而def可以定义复杂的复合语句函数体;
lambda函数不能共享给别的程序调用,而def定义的函数可以。
高阶函数
变量可以指向函数 —> 函数名其实是指向函数的变量 —> 函数本身可以赋值给变量 —> 函数的参数能接收变量 —>一个函数可以接收另一个函数作为参数
知识了解:高阶函数是函数式编程的体现;函数式编程是一种高抽象度的编程范式,其特点就包括允许把函数本身作为参数传入另一个函数,并允许返回一个函数
内置高阶函数——map(func, *iterables)
根据提供的函数对指定的序列做映射。第一个参数
接收一个函数名,后面的参数接收一个或多个序列、支持迭代
的容器或迭代器。调用map函数时,函数func会作用于
iterables中的每一个元素,最后返回一个map对象
内置高阶函数——filter(function or None, iterable)
- 对指定序列执行过滤筛选操作。第一个参数可以是函数名或None,第二个参数类似map()规则但只能有一个。filter()会将传入的函数依次作用于iterable中的每一个元素,然后根据返回值是True或False决定保留与否,最后返回一个filter对象。如果第一个参数是None,则返回为真的项。
内置高阶函数——sorted(iterable, key=None, reverse=False)
- 对可迭代对象进行排序(默认为升序)操作,返回一个排序后的新列表。可以传入key函数来实现自定义排序,reverse设置为True表示降序。
内置高阶函数——unctools.reduce(function, sequence[, initial])
- 对参数序列中的元素进行累积,返回为一个值。第一个参数是有两个参数的函数,第二个参数是指定的可迭代对象,第三个参数为可选参数,表示初始值。工作过 程:首先把 sequence中的前两个元素传给函数function,经函数处理后,再把计算所得结果与sequence的第三个元素作为新的参数传给函数,以此类推,最后返回一个值。
闭包与修饰器
在嵌套函数中,如果内部函数引用了外部作用域
(非全局作用域)的变量,则这个内部函数就称为闭包,
又称闭包函数。形成闭包有三个条件:
- 存在于嵌套关系的函数中
- 内部函数引用了外部函数的变量
- 外部函数将内部函数名作为返回值










