python-4-函数式编程

30 篇文章 0 订阅
17 篇文章 0 订阅
函数式编程
1、简介
  • Functional Programming。
  • 允许把函数本身作为参数传入另一个函数,还允许返回一个函数。
2、高阶函数
2.1、变量可以指向函数
  • abs(-10)是函数调用,abs是函数本身。
  • 函数本身可以赋值给变量,即:变量可以指向函数。
  • f = abs f(-10) --> 10
2.2、函数名也是变量
  • 对于abs()这个函数,完全可以把abs看成是一个变量,指向一个可以计算绝对值的函数。eg:abs = 10之后abs(-10)会报错,因为abs指向了10就无法调用函数了。
2.3、传入函数
  • 一个函数就可以接受另一个函数作为参数,这种函数就成为高阶函数。
3、map/reduce
3.1、map
  • map函数接收两个参数,一个是函数,一个是Iterator。
  • r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]),其中f为函数,返回的r是一个Iterator(map)。通过list()函数调用时才会计算得出每个元素。list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])):将所有元素变为字符串。
3.2、reduce
  • reduce把一个函数作用在一个序列上,这个函数必须接受两个参数,reduce把结果继续和序列的下一个元素做累积计算,效果为
reduce(f, [x1,x2,x3,x4]) = f(f(f(x1,x2),x3),x4)
3.3、filter
  • filter()用于过滤序列,把传入的参数依次作用于每个元素,根据返回值是True还是False决定是否保留钙元素。filter(f, L),其中f为过滤条件函数。
  • filter()返回的是一个Iterator。
3.4、sorted
  • 是一个高阶函数,可以接受一个key函数来实现自定义的排序。sorted([1,3,2,8,5], key=abs),会根据绝对值大小来排序。key指定的函数将会作用于list上每一个元素。
  • 默认情况下对字符串的排序,是按照ASCII大小进行比较的。可以根据reverse参数进行是否反向。
3.5、返回函数
  • 可以将函数作为结果值返回。

  • 可以在函数中添加函数,当调用外部函数时返回内部函数,调用内部函数后才真正的执行逻辑。

  • 闭包:返回的函数没有立即执行,而是调用到了f()才执行。

  • 返回闭包时返回函数不要引用任何循环变量,或者后续会发生变化的变量。

3.6、匿名函数
  • 关键字lambda表示匿名函数。写作lambda 参数:逻辑描述。
  • python对匿名函数的支持有限,只有一些简单的情况下可以使用匿名函数。
3.7、装饰器
  • 通过变量指向函数,可以根据函数对象的_name_属性,获得函数的名字,如f.name
  • 想要增强now()函数的功能,如在函数前后自动打印日志,但又不希望修改now()函数的定义,这种在代码运行期间动态增加功能的方式,称之为装饰器。
3.8、偏函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值