• day 15 面向过程编程 函数式 (2)


    ##########  2.0__面向过程(理论)----总结   #############

    # 编程思想/范式

    # 面向过程的编程思想:
    # 核心是"过程"二字,过程即流程,指的是做事的步骤:先什么、再什么、后干什么
    # 基于该思想编写程序就好比在设计一条流水线

    # 优点:复杂的问题流程化、进而简单化
    # 缺点:扩展性非常差

    # 面向过程的编程思想应用场景解析:
    # 1、不是所有的软件都需要频繁更迭:比如编写脚本
    # 2、即便是一个软件需要频繁更迭,也不并不代表这个软件所有的组成部分都需要一起更迭


    ##########       3.0__函数式----总结     #############

    # 1.0 def 用于定义有名函数

    # 在调用时 必须写成函数名加()的形式 有参数必须加上参数才能够进行调用成功

    def func(x,y):
    return x+y

    # print(func) # func=函数的内存地址: <function func at 0x0000023BDFFC9168>

    # 调用阶段 :
    # print(func(1,2)) #输出结果为3


    # 2.0 lambda用于定义匿名函数
    print(lambda x,y:x+y) # 输出结果:<function <lambda> at 0x000001F6FFA644C8>


    # 3.0 调用匿名函数
    # 方式一:
    res=(lambda x,y: x+y )(1,2)
    print(res)

    # 方式二 :
    func=lambda x,y:x+y
    res=func(1,2)
    print(res)

    #4、匿名用于临时调用一次的场景:更多的是将匿名与其他函数配合使用


    匿名函数的案例应用
    salaries={
    'siry':3000,
    'tom':7000,
    'lili':10000,
    'jack':2000
    }
    # 需求1:找出薪资最高的那个人=》lili
    # res=max([3,200,11,300,399])
    # print(res)

    # res=max(salaries)
    # print(res)


    salaries={
    'siry':3000,
    'tom':7000,
    'lili':10000,
    'jack':2000
    }
    # 迭代出的内容 比较的值
    # 'siry' 3000
    # 'tom' 7000
    # 'lili' 10000
    # 'jack' 2000

    # def func(k):
    # return salaries[k]

    # ========================max的应用
    # res=max(salaries,key=func) # 返回值=func('siry')
    # print(res)

    # res=max(salaries,key=lambda k:salaries[k])
    # print(res)

    # ========================min的应用
    # res=min(salaries,key=lambda k:salaries[k])
    # print(res)


    # ========================sorted排序
    # salaries={
    # 'siry':3000,
    # 'tom':7000,
    # 'lili':10000,
    # 'jack':2000
    # }
    res=sorted(salaries,key=lambda k:salaries[k],reverse=True)
    # print(res)

    # ========================map的应用(了解)
    # l=['alex','lxx','wxx','薛贤妻']
    # new_l=(name+'_dsb' for name in l)
    # print(new_l)

    # res=map(lambda name:name+'_dsb',l)
    # print(res) # 生成器
    # ========================filter的应用(了解)
    # l=['alex_sb','lxx_sb','wxx','薛贤妻']
    # res=(name for name in l if name.endswith('sb'))
    # print(res)

    # res=filter(lambda name:name.endswith('sb'),l)
    # print(res)

    # ========================reduce的应用(了解)
    from functools import reduce
    res=reduce(lambda x,y:x+y,[1,2,3],10) # 16
    print(res)

    res=reduce(lambda x,y:x+y,['a','b','c']) # 'a','b'
    print(res)
    """


    salaries={
    'siry':3000,
    'tom':7000,
    'lili':10000,
    'jack':2000
    }
    # 需求1:找出薪资最高的那个人=》lili
    # res=max([3,200,11,300,399]) # max函数的应用
    # print(res)

    res=max(salaries)
    print(res) # tom 是输出结果?? 因为我们迭代字典时主要时key(根据Ascall码)、而非是value

    salaries={
    'siry':3000,
    'tom':7000,
    'lili':10000,
    'jack':2000
    }
    # 迭代出的内容 比较的值
    # 'siry' 3000
    # 'tom' 7000
    # 'lili' 10000
    # 'jack' 2000


    # ========================max的应用
    # 方案一
    def func(k):#用于提取字典中的 value的值
    return salaries[k]
    res=max(salaries,key=func) # 返回值=func('siry')
    print(res)

    # res=max(salaries,key=lambda k:salaries[k])
    # print(res)

    # ========================min的应用
    # res=min(salaries,key=lambda k:salaries[k])
    # print(res)


    # ========================sorted排序
    # salaries={
    # 'siry':3000,
    # 'tom':7000,
    # 'lili':10000,
    # 'jack':2000
    # }
    # res=sorted(salaries,key=lambda k:salaries[k],reverse=True)
    # print(res)

    # ========================map的应用(了解)
    # l=['alex','lxx','wxx','薛贤妻']
    # new_l=(name+'_dsb' for name in l)
    # print(new_l)

    # res=map(lambda name:name+'_dsb',l)
    # print(res) # 生成器
    # ========================filter的应用(了解)
    # l=['alex_sb','lxx_sb','wxx','薛贤妻']
    # res=(name for name in l if name.endswith('sb'))
    # print(res)

    # res=filter(lambda name:name.endswith('sb'),l)
    # print(res)

    # ========================reduce的应用(了解)
    # from functools import reduce
    # res=reduce(lambda x,y:x+y,[1,2,3],10) # 16
    # print(res)
    #
    # res=reduce(lambda x,y:x+y,['a','b','c']) # 'a','b'
    # print(res)
  • 相关阅读:
    java学习中,instanceof 关键字 和 final 关键字、值的传递(java 学习中的小记录)
    java学习中,DVD管理系统纯代码(java 学习中的小记录)
    java学习中,static 修饰符使用、static方法、静态代码块、主函数为何如此写、单例设计模式(java 学习中的小记录)
    java学习中,匿名函数、构造方法、构造代码块、构造方法中调用构造方法(java 学习中的小记录)
    java学习中,成员变量 和 局部变量(java 学习中的小记录)
    Java 面向对象的解释 和 类与对象方法的创建使用 (Java 学习中的小记录)
    java学习中,二分法查找数组中的元素(java 学习中的小记录)
    java学习中,冒泡排序(java 学习中的小记录)
    Kotlin语法 入门篇章(1)
    gitlab
  • 原文地址:https://www.cnblogs.com/kwkk978113/p/13348181.html
Copyright © 2020-2023  润新知