面向编程和函数式

面向编程和函数式

1.编程思想/范式

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

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

面向过程的编程思想应用场景解析:

  1. 不是所有的软件都需要频繁更迭:比如编写脚本
  2. 即便是一个软件需要频繁更迭,也不并不代表这个软件所有的组成部分都需要一起更迭

2. 函数式

  1. def用于定义有名函数
    func=函数的内存地址
def func(x,y):
    return x+y
print(func)
  1. lamdab用于定义匿名函数
print(lambda x,y:x+y)

  1. 调用匿名函数
res=(lambda x,y:x+y)(1,2)
print(res)
  1. 匿名用于临时调用一次的场景:更多的是将匿名与其他函数配合使用
    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)
posted @ 2020-03-26 14:43  小子,你摊上事了  阅读(88)  评论(0)    收藏  举报