基于微软Ling框架下的函数式编程思想
核心思想:函数作为参数
假设现在有一个问题:
定义一个函数,可以根据所给条件条件返回学生对象:
#直观的做法:
def get_students01(list_stu):
for item in list_stu:
if item.age > 25:#变化的条件
yield item
提取变化,进行单独封装:
def condition01(item):
return item.age > 25
直接调用变化:
def get_students01(list_stu):
for item in list_stu:
if condition01(item):
yield item
还是很麻烦!!!
用参数func_condition抽象代表各种条件:
def get_students(list_stu,func_condition):
for item in list_stu:
if func_condition(item):
yield item
直接以改变传参来改变条件:
re02 = get_students(studs,condition01)
for item in re02: #用for函数调用__next__()内建函数:
print(item)
以lambda函数来进行传参:
re02 =get_students(studs,lambda item:item.age>25)
for item in re02:
print(item)
可以将所有函数方法放入一个类中,以便日后调用:
class Method:
def get_students(list_stu,func_condition):
for item in list_stu:
if func_condition(item):
yield item
调用:
re03=Method.get_students(studs,lambda item:item.age>25)
for item in studs:
print(item)
总结:
1.找出变化点
2.将变化的条件单独封装成函数
3.将函数作为参数传给另一个函数
4.善于使用lambda函数代替条件函数功能
5.将经常使用的函数方法单独保存