python学习十一(高阶函数)

函数式编程
- 在python中,函数是一等对象
- 一等对象一般都会具有如下特点:
1.对象是在运行时创建的
2.能赋值给变量或作为数据结构中的元素
3.能作为参数传递
4.能作为返回值返回
- 高阶函数
- 高阶函数至少要符合以下两个特点的一个
1.接收一个或多个函数为参数
2.将函数作为返回值返回

- 装饰器
    - 装饰器本质上是一个 Python 函数或类,它可以让其他函数或类在不需要做任何代码修改的前提下增加额外功能,装饰器的返回值也是一个函数/类对象


高阶函数
接收函数为参数,或者将函数作为返回值的函数是高阶函数
创建一个列表,定义一个函数,可以将指定列表中的所有的(偶数,奇数,大于5的数),保存到一个新的列表中返回
def fn1(i):
if i % 2 == 0:
return True
return False
def fn2(i):
if i > 5:
return True
return False
def fn3(i):
if i % 2 != 0:
return True
return False

def fn(func,lst):
'''
func: 需要的进行的模块:
fn1(打印偶数),fn2(打印大于5的数),fn3(打印奇数)
lst: 要进行筛选的列表
'''
new_list =[]
for n in lst:
if func(n):
new_list.append(n)
return new_list

i = [1,2,3,4,5,6,7,8,9]
print(fn(fn3, i))

sort()该方法用来对列表中的元素进行排序,sort()方法默认是直接比较元素的大小
在sort()可以接收一个关键字参数,key
可以需要一个函数作为参数,当设置了函数作为参数,
每次都会以列表中的一个元素作为参数来调用函数,并且使用函数的返回值来比较元素的大小
l = ["aa","c","fffff","dddddd","ee"]
l.sort(key=len) # 以元素的个数来排序
print(l)

l = [2,5,"1","10",999,888]
l.sort(key=int) # 以数字类型的方式做比较
print(l)

l = [2,5,"1","10",999,888]
l.sort(key=str) # 以字符串类型的方式做比较
print(l)

sorted()这个函数和sort()的用法基本一致,但是sorted()可以对任意的序列进行排序,并且使用sorted()排序不会影响原来的对象,而是返回一个新对象
l = [2,5,"1","10",999,888]
print("排序前:",l)
print(sorted(l,key=int))
print("排序后:",l)


posted @ 2019-08-07 14:43  wenjian022  阅读(179)  评论(0编辑  收藏  举报