ITS·黑客

py函数式编程与高阶函数

2017-05-14  本文已影响3人  小灰灰233

一、函数式编程

抽象程度高,执行效率低
纯粹的函数式编程编写的函数没有变量,输入确定则输出确定,称之为没有副作用
允许把函数本身作为参数传入另一个函数,还允许返回一个函数

二、高阶函数

1、变量可以指向函数

abs是函数本身,abs(-10)是函数调用

函数本身可以赋值给变量
f=abs
f(-9)
9

2、函数名也是变量

函数名其实就是指向函数的(默认)变量

把abs指向其他对象,就无法再调用该函数
(需重启python交互环境)

3、传入函数

高阶函数:一个函数可以接收另一个函数作为参数
def add(x,y,f)
return f(x)+f(y)
调用时add(-5,6,abs)

三、map/reduce

(函数)

1、map

接收两个参数——函数和iterable
将函数依次作用到序列的每个元素,并将结果作为新的iterator返回
def f(x):
return x*x
r=map(f,[1,2,3])
list(r)

因为r是iterator惰性序列,需要list()将整个序列计算出来并返回一个list

2、reduce

把一个函数作用在一个序列上,将结果继续与序列的下一个元素做累积计算
reduce(f,[x1,x2,x3,x4])=f(f(f(x1,x2)x3)x4)

from functools import reduce
def fn(x,y)
reduce x*10+y

reduce(fn,[1,2,3,4])
1234

上一篇下一篇

猜你喜欢

热点阅读