函数式编程

python学习网 2018-03-28 11:14:02

函数式 = 编程语言定义的函数 + 数学意义的函数

1.不可变:不用变量保存状态,不修改变量

eg

def test():
    return n+1

2.第一类对象:函数即“变量”

eg:

def text(n) :
    print(n)
def test(name)
    print(name)

text(test(sumcet))

  第一步执行test(smcet),调用test函数,打印sumcet,由于test函数没有返回值,所以返回值为None,最后将得到的结果传给text函数

相当于将test()当作变量一样在处理最后打印结果为

sumcet
None

高阶函数

  a.把函数当作参数传给另一个函数

  b.返回值中包含参数

上面的text函数就是高阶函数

3.尾调用

在函数的最后一步调用另一个函数,最后一行不一定是函数的最后一步,

例如带有判断语句的函数

4.map函数

  map()是python内置的高阶函数,他接收一个函数和一个列表,并通过这个函数依次作用在列表的每个元素上,在python2中他将返回一个新列表,python3中得到的是迭代器

eg:

s = [1, 2, 3, 4, 5]


def reduce(li1):
    return li1 - 1#减操作


def add(li2):
    return li2 + 1#加操作


def invo(li3):
    return li3 * li3#幂运算

#map函数的内部实现
def map_ex(func, li):
    b = []
    for a in s:
        b.append(func(a))
    return b


print(map_ex(add, s))#map_ex(add,s)将获取add函数的地址
print(map_ex(reduce, s))
print(map_ex(invo, s))
print('********************')
#利用map函数实现同样功能。
print(list(map(lambda x: x + 1, s)))#lambda匿名函数,s必须是可迭代对象,与上面结果进行对比
print(list(map(lambda x: x - 1, s)))
print(list(map(lambda x: x * x, s)))

输出

[2, 3, 4, 5, 6]
[0, 1, 2, 3, 4]
[1, 4, 9, 16, 25]
********************
[2, 3, 4, 5, 6]
[0, 1, 2, 3, 4]
[1, 4, 9, 16, 25]

map()函数可以做很多

eg

name = ['bbu', 'sumcet', 'loVe']


def eng(s):
    s1 = s[0:1].upper() + s[1:].lower()
    return s1


print(list(map(eng, name)))

  输出

['Bbu', 'Sumcet', 'Love']

  

5.filter函数

 

 

 

  

阅读(771) 评论(0)