面向过程编程,函数式编程

面向过程编程,函数式编程

峰哥原创面向过程解释:

函数的参数传入,是函数吃进去的食物,而函数return的返回值,是函数拉出来的结果,面向过程的思路就是,把程序的执行当做一串首尾相连的函数,一个函数吃,拉出的东西给另外一个函数吃,另外一个函数吃了再继续拉给下一个函数吃。。。

面向过程:机械式思维,流水线式编程


例如:
用户登录流程:前端接收处理用户请求-》将用户信息传给逻辑层,逻辑词处理用户信息-》将用户信息写入数据库
验证用户登录流程:数据库查询/处理用户信息-》交给逻辑层,逻辑层处理用户信息-》用户信息交给前端,前端显示用户信息

函数式编程:http://egon09.blog.51cto.com/9161406/1842475

#无函数
array=[0,1,2,3,4]
ret=[]
for i in array:
ret.append(i**2)
print(ret)
[0, 1, 4, 9, 16]

#如果我们有一万个列表,那么你只能把上面的逻辑定义成函数
def map_test(array):
ret=[]
for i in array:
ret.append(i**2)
return ret
print(map_test(range(5)))
#如果我们的需求变了,不是把列表中每个元素都平方,还有加1,减一,那么可以这样
lis=[2,4,6,10,8]
def add_num(x):
    return x+1
def fun(func,array):
    li=[]
    for i in lis:
        li.append(func(i))
    return li
print(fun(add_num,lis))
print(fun(lambda x:x+1,lis))

#可以使用匿名函数
print(fun(lambda x:x+1,lis))

#上面就是map函数的功能,map得到的结果是可迭代对象 print(map(lambda x:x-1,range(5)))

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

#sb_xiang,xb_xiang,wang , 过滤掉带有sb的字符串
lis=["sb_xiang","wang","sb_shuang"]
# def ssw(x):
# return x.startswith("sb")
# def fun(func,lis):
# li=[]
# for i in lis:
# if not func(i):
# li.append(i)
# return li
# print(fun(ssw,lis)) 
# print(fun(lambda n:n.startswith('sb'),lis))

# filter过滤器,一行搞定上面9行代码
print(list(filter(lambda n:not n.startswith("sb"),lis)))
原文地址:https://www.cnblogs.com/zhiqiao/p/8987105.html