Python (九)函数式编程,高阶函数
来源:互联网 发布:0ffice办公软件 编辑:程序博客网 时间:2024/06/05 03:25
函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。
函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!
Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。
一、高阶函数
高阶函数简单的理解就是,一个函数在调用的时候将另外一个函数作为参数传入,这个函数就是高阶函数。
函数式编程就是指这种高度抽象的编程范式。
# -*- coding:utf-8 -*- def function_test(a,b,f):print f(a)print f(b)return f(a) + f(b)if __name__ == '__main__':print "--------------------"print function_test(-3,-4,abs)注意:在函数作为形参的时候,只需要传入函数名就可以了。
# -*- coding:utf-8 -*- def test(f):print abs(f)def function_test(a,b,s):s(a)if __name__ == '__main__':print "--------------------"function_test(-3,-4,test)
二、高阶函数map()
map()
函数接收两个参数,一个是函数,一个是序列,map
将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回
# -*- coding:utf-8 -*- def test(x):return x*xif __name__ == '__main__':L = map(test,[1,2,3,4,5,6])for x in xrange(0,len(L)):print L[x]
高阶函数reduce():
reduce把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算.
# -*- coding:utf-8 -*- def test(x,y):return x+yif __name__ == '__main__':sum = reduce(test,[1,2,3,4])print sum
这两个高阶函数可以配合同时使用,才能够体现存在的价值。
高阶函数filter()
:
filter()
函数在使用的时候也需要传入两个参数,一个是函数,一个是序列,filter()
会将传入的函数作用于序列中的每一个元素,结果根据函数返回值是True
还是False
决定保留还是丢弃该元素。
# -*- coding:utf-8 -*- def test(x):return x % 2 != 0if __name__ == '__main__':L = filter(test,[1,2,3,4,5,6,7,8,9,10])print L
删除序列中的空字符串:
def not_empty(s): return s and s.strip()print filter(not_empty, ['A', '', 'B', None, 'C', ' '])
高阶函数sorted():
这是一个排序函数是Python内置的函数,直接使用的时候按照默认的排序方式排序,由小到大。这个函数还可以接受一个自定义的排序函数,将自定义的排序函数作用于序列中的每一个元素。
# -*- coding=utf-8 -*-L = [4,77,4,2,9,76,45]print sorted(L)print sorted(['df','DRFDU','jkTUU','TERWRfdjj'])
自定义忽略大小写比较字符串。
def cmp_ignore_case(s1, s2): u1 = s1.upper() u2 = s2.upper() if u1 < u2: return -1 if u1 > u2: return 1 return 0print sorted(['bob','about','Zoueh','ERYfdgk','ryeu'],cmp_ignore_case)
0 0
- Python (九)函数式编程,高阶函数
- python 学习笔记---函数式编程之高阶函数
- python 函数式编程和高阶函数的概念
- python 函数式编程 一些高阶函数的使用
- Python函数式编程之高阶函数
- 【Python学习日记】函数式编程 之 高阶函数
- 【Python学习笔记】函数式编程:高阶函数
- 【Python学习笔记】函数式编程:高阶函数filter
- 【Python学习笔记】函数式编程:高阶函数sorted
- Learning Python 012 函数式编程 1 高阶函数
- Python学习笔记,函数式编程,高阶函数
- python函数式编程高阶函数之sorted()
- python函数式编程之高阶函数学习
- Python函数式编程(高阶函数 <map/reduce filter sorted> 返回函数 匿名函数 装饰器 偏函数)
- Python 高阶 Python函数式编程以及高阶函数reduce,sorted,filter
- Python进阶笔记(1)_ 函数式编程 之 高阶函数
- Python函数式编程之高阶函数filter()(求素数,回数)
- Python函数式编程(高阶函数、map()、reduce()、filter()、sorted()、lambda、decorator装饰器)
- Java NIO原理图文分析及代码实现
- ContextLoaderListener作用详解
- 在Android中使用正确的姿势写一个string.xml
- 帮你自学成才的9个免费大数据在线课程
- i++和++i, i--和--i的区别
- Python (九)函数式编程,高阶函数
- iOS搜索指定字符在字符串中的位置
- 【Linux4.1.12源码分析】IP层报文发送之ip_local_out
- HDU-2023求平均成绩
- Spring MVC DispatcherServlet配置
- 数据结构
- QtCreator动态编译jsoncpp完美支持x86和arm平台
- 自定义TopBar
- linked-list-cycle-ii(有环链表的第一个公共节点)