编程思想本身是不依赖与任何语言的,只不过有些编程语言为了遵从某种编程思想,对自己的语言做了特殊的设计。
编程思想也可以成为编程范式,而范式是多种多样的。
备注:所有编程思想都是建立在面向过程思想的基础之上的。
函数编程:它并不是用函数(def)编程那么简单,而是将计算机的运算视为数学意义上的运算,
过程与函数对比:函数式更加注重执行的结果,而不是过程
函数式代表语言:Haskell Erlang 等
备注:python并不是函数式的编程语言,但是仍然为我们提供了很多函数式编好的特性,如:lambda、map、reduce、filter
定义方式:lambda x,y : x+y
匿名函数关键字 需要参数 返回值
调用:res = (lambda x,y : x+y)(1,2) 但是实际上都不会这么调用
取最大值:
max([3,52,62,78,12,45,10,42]):max本身就是一个迭代器,每次从列表中取出一个值,与取出的下一个值做比较,留下较大的值继续与下一个值比较。直到列表结束。
实例:
# 最简单用法:res = max(12,52,6,12,45,78,2) # 找出年龄最大的人的名字 age = {"nida":18,"yaoyao":22,"lili":17} res = max(age,key=lambda k:age[k]) # 被迭代对象放置在括号内左侧,max迭代器每次循环从匿名函数那里拿到返回值, # 然后一一进行对比留下较大的值,循环往复直到被迭代对象的值取完 print(res)
取最小值:min
实例
# 最简单用法:res = min(12,52,6,12,45,78,2) # 找出年龄最小的人的名字 age = {"nida":18,"yaoyao":22,"lili":17} res = min(age,key=lambda k:age[k]) # 被迭代对象放置在括号内左侧,max迭代器每次循环从匿名函数那里拿到返回值, # 然后一一进行对比留下较小的值 print(res)
排序:sorted
实例
# 最简单用法:res = sorted([12,52,6,12,45,78,2]) # 按年龄对人员进行排序 age = {"nida":18,"yaoyao":22,"lili":17} res = sorted(age,key=lambda k:age[k]) # 默认从小到大排列 res1 = sorted(age,key=lambda k:age[k],reverse=True) # reverse为真时,从大倒小排列 # 被迭代对象放置在括号内左侧,max迭代器每次循环从匿名函数那里拿到返回值,进行排序
映射:map(了解,它能做的生成式都可以做)
实例
# 给每个名字加上"_mm"的后缀 s = {"nida","yaoyao","lili"} res = map(lambda name:name+"_mm",s) # 用map映射写法 得到一个map(也是生成器) # s 为可迭代对象,每次迭代的值当参数传入匿名函数,拿到返回值。直到可迭代对象取值完毕 res1 =(x+"_mm" for x in s) # (回顾)用生成式的写法 得到一个生成器