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)