zoukankan      html  css  js  c++  java
  • 面向过程编程,函数式编程

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

    峰哥原创面向过程解释:

    函数的参数传入,是函数吃进去的食物,而函数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)))
  • 相关阅读:
    杭电2007
    杭电 2004
    杭电2005
    杭电2001
    杭电 2000
    Section One
    杭电oj 1002
    杭电oj 1001
    JavaScript高级程序设计第14章表单脚本 (学习笔记)
    JavaScript高级程序设计(学习笔记)
  • 原文地址:https://www.cnblogs.com/zhiqiao/p/8987105.html
Copyright © 2011-2022 走看看