python 高阶函数有哪些什么是高阶函数?
变量可以指向函数,函数的参数可以接收变量 , 那么函数可以接收另一个函数作为参数,这种函数称为高阶函数 。
python高阶函数有哪些?
map函数
map()是python内置的高阶函数,它接收两个参数,一个是函数 , 一个是序列,map将传入的函数依次作用到序列的每个元素,并且把结果作为新的列表返回 。
filter函数
filter()同样也是接收一个函数和一个序列,和map()不同的是 , filter函数把传入的函数依次作用于每个元素,然后返回返回值是True的元素 。
reduce函数
reduce()把一个函数作用到一个序列上,这个函数必须接收两个参数 , reduce把结果和序列的下一个元素做累积计算 。
lambda函数
lambda()有时候传参数时不需要显示自定义的函数,直接传入匿名函数更方便;冒号前面的X,y表示函数参数,匿名函数不需要担心函数名的冲突,匿名函数也是一个函数对象,可以吧匿名函数赋值给一个变量 , 再利用变量来调用函数,匿名函数也可以作为返回值返回 。
sorted函数
sorted()作为python内置高阶函数之一 , 其功能是对序列(列表、元组、字典、集合、字符串)进行排序 。
一文读懂Python 高阶函数将函数作为参数传入,这样的函数称为高阶函数 。函数式编程就是指这种高度抽象的编程范式 。
变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数 。如下所示:
map(fun, lst),将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表返回 。
定义一个匿名函数并调用,定义格式如--lambda arg1,arg2…:表达式
reduce把一个函数作用在一个序列[x1, x2, x3, …]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算 。
filter() 函数用于过滤序列 , 过滤掉不符合条件的元素,返回由符合条件元素组成的新列表 。
闭包的定义?闭包本质上就是一个函数
如何创建闭包?
如何使用闭包?典型的使用场景是装饰器的使用 。
global与nonlocal的区别:
简单的使用如下:
偏函数主要辅助原函数 , 作用其实和原函数差不多,不同的是,我们要多次调用原函数的时候,有些参数,我们需要多次手动的去提供值 。
而偏函数便可简化这些操作,减少函数调用,主要是将一个或多个参数预先赋值,以便函数能用更少的参数进行调用 。
我们再来看一下偏函数的定义:
类func = functools.partial(func, *args, **keywords)
我们可以看到 , partial 一定接受三个参数,从之前的例子,我们也能大概知道这三个参数的作用 。简单介绍下:
总结
本文是对Python 高阶函数相关知识的分享,主题内容总结如下:
python高阶函数有哪些1、map
map()函数接受两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每一个元素上 , 并把结果作为新的Iterator返回 。
举例,比如我们有一个函数f(x)=x*2,要把这个函数作用在一个list[1, 2, 3, 4, 5, 6, 7, 8,
9]上,就可以用map()实现 。
def f(x):
... return x*2
...
r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
list(r)
[2, 4, 6, 8, 10, 12, 14, 16, 18]
所以,map()作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的f(x)=x*2,还可以计算任意复杂的函数,比如把这个list所有的数字转为字符串:
list(map(str,[1, 2, 3, 4, 5, 6, 7, 8, 9]))
["1", "2", "3", "4", "5", "6", "7", "8", "9"]
2、reduce
reduce是把一个函数作用在一个序列[x1, x2,
x3……]上,这个函数必须接收两个参数 , reduce把结果继续和序列的下一个元素做累计计算 。简单来说,就是先计算x1和x2的结果 , 再拿结果与x3计算,依次类推 。比如说一个序列求和,就可以用reduce实现 。
from functools import reduce
def add(x, y):
... return xy
...
reduce(add, [1, 3, 5, 7, 9])
25
也就是说,假设python没有提供int()函数,你完全可以自己写一个把字符串转化为整数的函数,而且只需要几行代码 。
3、filter
用于过滤序列,和map函数类似,filter也接收一个函数和一个序列 , 不同于map的是,filter把传入的函数依次作用于每一个元素 , 然后根据返回值是True还是False决定保留还是丢弃该元素,例如,在一个list中,删掉偶数,只保留奇数,可以这么写:
def is_odd(n):
return n % 2 == 1
list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
# 结果: [1, 5, 9, 15]
把一个序列中的空字符串删掉,可以这么写:
def not_empty(s):
return s and s.strip()
list(filter(not_empty, ["A", "", "B", None, "C", " "]))
# 结果: ["A", "B", "C"]
可见用filter()这个高阶函数,关键在于正确实现一个筛选函数 。
4、sorted
无论冒泡排序还是快速排序 , 排序的核心是比较两个元素的大小 。如果是数字,我们可以直接比较 , 但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来 , Python内置的sorted()函数就可以对list进行排序:
sorted([36, 5, -12, 9, -21])
[-21, -12, 5, 9, 36]
此外,sorted()函数也是一个高阶函数 , 它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:
sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]
【python四大高阶函数的简单介绍】关于python四大高阶函数和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- chatgpt绘图科研ai,科研绘图知乎
- 新媒体运营如何进编制,新媒体运营培训
- excel怎么转文本,excel转换成word文档
- mysql密码忘了怎么弄 mysql忘记密码怎么解决
- ios选什么助手,ios用什么助手
- 飞行战舰攻略游戏,飞行战舰歌利亚
- apk角色扮演手机游戏,角色扮演手机游戏推荐
- php的数据库怎么打开 php怎么调用数据库数据
- 自己网站如何加广告推广,网站怎么加广告