Fluent Python

一等函数

2017-12-29  本文已影响11人  一块大番薯

指的不是函数中特殊群体,而是指:所有函数都是一等对象

把函数视为对象

函数本身是 function 类的实例

函数
函数帮助文档
归约函数:
把某个操作连续应用到序列元素上,累加之前的结果,最终归约成一个值
filter、sum、any、all 都是依据这样的思想

可调用对象

意味着可以把调用运算符 () 作用于对象身上
通过内置函数 callable() 可判断对象是否可调用,以下 7 种可调用对象:

用户定义的可调用类型

函数是对象,任何对象也可以表现的像函数一样,只需实现实例方法_call_

可调用
简单演示
相当于为 bingo.pick() 创建了一个快捷方式 bingo()
此时内部必须维护一个状态,让实例在调用之间可用,此处为 _item。
装饰器、闭包也有这样的特点
函数内省
函数有,普通对象没有的属性
位置参数、仅限关键字参数

仅限关键字参数(keyword-only argument)一般放在 * 参数后面,
并且在 * 后面的位置参数就是仅限关键字参数,只是这个关键字参数没有默认值。


仅限关键字参数
获取关于参数的信息
注意函数参数
参数有关信息
函数注解
__annotations__
signature

Signature 对象有 parameters 属性(一个字典),以及 return_annotation 属性

函数式编程

由 operator 和 functools 两个包支持

operator 模块
itemgetter 自行构建函数
functools.partial 冻结参数

意思是:把原函数某些参数固定,这样使用这个函数可以接受更少的参数
functools 模块提供一系列高阶函数,reduce 最知名,其次就到了 partial 及其变体 partialmethod


partial。把函数 mul 的第一个位置参数固定为 3
上一篇 下一篇

猜你喜欢

热点阅读