第十九章、函数的高级话题

2017-06-13  本文已影响0人  聽風踏雪

这一章将会介绍一系列更高级的与函数相关的话题:递归函数、函数属性和注解、lambda表达式、如map和filter这样的函数式编程工具。

函数设计概念

①、耦合性:对于输入使用参数并且对于输出使用return语句。

②、耦合性:只有真正必要的情况下使用全局变量。

③、耦合性:不要改变可变类型的参数,除非调用者希望这样做。

④、聚合性:每一个函数都应该有一个单一的、统一的目标。

⑤、大小:每一个函数应该相对较小。

⑥、耦合:避免直接改变再另一个模块文件中的变量。

递归函数

1、用递归求和:

2、编码替代方案:

3、循环语句VS递归:

4、处理任意结构:

函数对象:属性和注解

1、间接函数调用:

2、函数内省:

3、函数属性:

4、Python3.0中的函数注解:

匿名函数:lambda

除了def语句外,Python还提供了一种生成函数对象的表达式形式。

1、lambda表达式:

lambda的一般形式是关键字lambda,之后是一个或多个参数(与一个def头部内用括号括起来的参数列表及其相似),紧跟的是一个冒号,之后是一个表达式:lambda argument1,argument2,...argumentN:expression using arguments

①、lambda是一个表达式,而不是一个语句。

②、lambda的主体是一个单个的表达式,而不是一个代码块。

2、为什么使用lambda:

通常来说,lambda起到了一种函数速写的作用,允许在使用的代码内嵌入一个函数的定义。它们完全是可选的(你总是能够使用def来替代它们),但是在你仅需要嵌入小段可执行代码的情况下它们会带来一个更简洁的代码结构。

3、如何(不要)让Python代码变得晦涩难懂:

由于lambda的主体必须是单个表达式(而不是一些语句),由此可见仅能将有限的逻辑封装到一个lambda中。

4、嵌套lambda和作用域:

lambda是嵌套函数作用域查找的最大受益者。

在序列中映射函数:map

map函数会对一个序列对象中的每一个元素应用被传入的函数,并且返回一个包含了所有函数调用结果的一个列表。

函数式编程工具:filter和reduce

函数式编程的意思就是对序列应用一些函数的工具。

本章小结

本章介绍了和函数相关的高级概念:递归函数、函数注解、lambda表达式函数、常用函数工具map、filter、reduce,以及通用函数设计思想。


上一篇下一篇

猜你喜欢

热点阅读