流畅的 Python - 4. 函数

今天深入接触了 Python 中的函数,发现函数比我想象的要高深。

Python 中万物皆对象,这一章就介绍了函数作为对象的一些属性。首先是测试所有对象共有的属性__doc__,可以看到它是function类的实例。然后是变量赋值、作为参数传递。这些概念虽然之前也知道,但是还没怎么用过,偶尔在key关键字参数的地方使用。

之后就是高阶函数了。有接触过函数式语言,所以现在看起来还是没难度的。介绍的几个高阶函数有内置的mapfiltersorted函数,functools模块中的reduce。而mapfilterreduce函数在 Python 中有了更好的替代——列表推导和生成器表达式。

Python 中,匿名函数由lambda关键字创建,它的定义体只能使用纯表达式。

可调用对象即能被调用运算符(())应用的对象,可使用内置的callable函数检测。

当一个对象实现了__call__方法,它就是一个函数类对象,可被调用。函数还是跟普通的类有所不同,它有一些独有的属性,比如__defaults__

Python 的参数处理机制有三个比较有趣,一个是新增的仅限关键字参数,另外两个是定位参数,***展开可迭代对象映射到单个参数,其中**映射的是字典,仅限关键字参数表示只能通过关键字来指定,且只能放到*后面。可放一个*只支持仅限关键字参数。

函数的三个属性__defaults____kwdefaults____code__放置了函数对象参数的一些信息。而使用inspect模块中的signature更加方便。

函数注解「用于为函数声明中的参数和返回值附加元数据」,它存储在函数的__annotations__属性中。

最后介绍了两个包operatorfunctools,用于支持函数式编程风格。

    原文作者:Xinnay
    原文地址: https://segmentfault.com/a/1190000014622312
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞