Python高阶函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python高阶函数相关的知识,希望对你有一定的参考价值。
一 、 生成器
使用生成器的原因:列表生成式打印元素时会占用更多的内存,而生成器是每次调用只产生一个值,不会过多占用内存的,生成器又叫惰性求值,延迟计算。
2 生成器的读取方式
A 使用X.next()进行读取
B 使用for循环进行读取(原因:生成器是可迭代对象)
生成器简单实例
使用生成器来获得斐波那契数列
3 yield :能够生成生成器对象的关键字
使得next()的指针在yield之前停止
购买图书的生成器模型
无缓冲器的定制和购买图书模型
如果中间有和缓冲区,则需要定义一个列表并将其情况加入列表中
生成器实战应用:迷你聊天机器人
二 、内置高阶函数
1 map :将函数func 作用域给定序列(s)的每一个元素,并且用一个列表提供返回值,如果func 为None ,func 表现为一个身份函数,返回一个含有每个序列中元素的集合的n个元组的列表。
其函数传入值为一个,不能同时传入多个值
2 reduce:将二元函数作用与seq 序列的元素,每次携带一对(先前的结果以及下一个序列元素)连续第将现有的结果和下一个值作用在获得后的结果上,最后减少我们的序列为一个单一的返回值,如果初始值init给定,第一个比较会是init和第一个序列元素而不是序列的头两个元素
其函数参数只能传入两个,而不能同时传入多个参数
3 filter:调用一个布尔函数func 来迭代便利每个seq中的元素,返回一个使func返回值为True 的元素序列
4 sorted:用于排序
默认reverse=False,表示从小到大的顺序进行排列,若reverse=True 则表示其排列为从大到小的顺序排列
实例:不区分大小写的情况下对列表中的元素进行排序
三 、lambda函数(匿名函数)
lambda 函数名:函数返回值
Lamdba 运算符
Lamdba args:expression (对参数进行调用并处理的)
args: 以逗号分割的参数列表
expression: 用到args 中个参数的表达式
Lamdba 语句定义的代码必须是合法的表达式,不能出现多条件语句(可使用if 的三元表达式)和其他非表达式语句,如for 和 while 等
lambda函数用于计算一个序列的平方并返回一个序列
lambda 函数联合reduce高阶函数进行对多重列表中的指定元素进行排序
四 、函数作为返回值,装饰器
闭包
函数(方法)装饰器
装饰器背后的主要动机是源自python面向对象编程,装饰器是在函数调用之上的修饰,这些修饰仅是当声明一个函数或者方法的时候,才会应用的额外调用
装饰器的语法是以@开头,接着是装饰器函数的名字和可选参数,紧跟着装饰器声明的是被修饰的函数,和装饰函数的可选参数。
1 基本装饰器的形式
2 函数中传入默认参数和必须参数的装饰器的使用
3 导入模块time进行计算函数的执行时间的装饰器的使用
4 函数中传入可变参数和关键字参数的装饰器的使用
5装饰器传入值的处理
6 装饰器中传入多个不同类型的值的装饰器的创建
五 实战实例:
IP地址查询系统
以上是关于Python高阶函数的主要内容,如果未能解决你的问题,请参考以下文章