面向过程与函数式

1、面向过程

1.1、编程思想/范式

	编程范式指的就是编程的套路,打个比方,如果把编程的过程比喻为练习武功,
那编程范式指的就是武林中的各种流派,而在编程的世界里常见的流派有:面向过
程、函数式、面向对象等,

1.2、面向过程的编程思想

	面向过程核心是"过程"二字,过程即流程,指的是做事的步骤:先什么、再什么、
后干什么基于该思想编写程序就好比在设计一条流水线,即无论采用什么语言、无
论依据何种编程范式设计出的程序,最终的执行都是过程式的。

优点:

	复杂的问题流程化、进而简单化

缺点:

	扩展性非常差

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

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

2、函数式

	函数式编程并非用函数编程这么简单,而是将计算机的运算视为数学意义上的
运算,比起面向过程,函数式更加注重的是执行结果而非执行的过程,代表语言
有:Haskell、Erlang。而python并不是一门函数式编程语言,但是仍为我们提供
了很多函数式编程好的特性,如lambda,map,reduce,filter

2.1、匿名函数

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

lamdab用于定义匿名函数
print(lambda x,y:x+y)


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

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

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

2.2、匿名函数的应用

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的应用(了解)
map函数可以接收两个参数,一个是函数,另外一个是可迭代对象,map会依次
迭代l,得到的值依次传给匿名函数(也可以是有名函数),而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进行过滤操作,这就用到了filter函数,比如过滤出后缀名为'_sb'的元素。
filter函数会依次迭代array,得到的值依次传给匿名函数,如果匿名函数的
返回值为真,则过滤出该元素,而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的应用(了解)
对l进行合并操作,比如求和运算,这就用到了reduce函数
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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值