7.2 函数·下
配套的 Python 教学视频
7.2.1 函数式编程
函数式编程:就是用函数来表示程序,用函数的组合来表达组合的意思。
① lambda 表达式
概念:当函数只有一个返回值,且只有一条代码语句的时候,就可以简写位 lambda 表达式。
格式: (lambda 形参:返回值)(实参)
有参数的:
有默认参数的:
可变参数:
字典可变参数:实际上提供的实参是按照准确搜索的方式 去 对应的
利用三目运算符 给lambda 表达式增加逻辑判断:
字典排序:sort(key) 方法里面有一个参数,叫做根据关键字,也就是说我们会根据 你提供的 key 来进行排序,而key 支持 lambda 表达式。
如果 key 的值 是一个lambda 表达式,那么它的 实参 默认就是 序列的每个元素了!
列表名=[{'名':'牟','龄':19 },{'名':'白','龄':33},{'名':'李',"龄":80 }]
列表名.sort(key=lambda a:a['名'])
print(列表名)
这样我们就可以根据 每个元素的 ‘名’ 这个键 的 值 来进行一个排序了。
字符串比较大小的话,肯定是 比较 先后顺序。
7.2.2 高阶函数
就是基于 已有函数定义 新函数,以函数 作为参数 加以利用,返回的 大多都是 函数的地址。但 也有可能 不是!这个完全 取决 于自己。
def absAdd(a,b,c):
return c(a)+c(b)
print(absAdd(-6,-8,abs))
其实 这种 东西,在 C/C++ 里面 叫做 回调函数!即 函数 也可以 当作参数。然后 在 其它函数里面 加以利用!这样做的 目的是更加的灵活。因为 回调函数 可以 随时更换!同样的数据 在不同的 情况下,要用不同的 函数 来进行 数据处理,所以 我们才需要这个 回调函数!
在 Python 里面 有一些 设定 好的 函数,直接 支持 回调函数的使用。而且 本身 是有 实战意义的!
① filter(回调函数,序列) 让 我们 提供一个 回调函数,它要求 这个回调函数 必须是 对 序列 有逻辑判断的,说白了就是 要对 这个序列里的元素 进行一个筛选!
比如说我们 就不想要 3 这个 数字。
print(list(filter((lambda x: x if x != 3 else ""), 列表)))
② map(回调函数,序列) 让我们提供一个 回调函数,它要求 这个回调函数 必须是 拥有运算功能,也就是 把 我们 序列里的 每个元素 都依靠 这个 运算功能 进行 处理。
这种 高阶函数,返回的是一个 地址,大家 一定别忘了 强转!因为 它不确定 处理的 这个可迭代 对象 到底是 什么类型的。一定要理解 为啥要这样做!哈哈 ~
③ functools.reduce(回调函数,序列) 迭代运算!让我们提供一个 回调函数,它要求 这个回调函数 必须拥有运算能力,而且 必须 具有两个参数!因为这样才能 往下迭代 运算呀。
注意哟,这个 函数 因为 它不返回 序列,只 返回迭代计算后的最终结果,所以不是 一个 地址。不需要强转!
print(functools.reduce(lambda a,b:a+b,range(1,101)))