第八章 函数(下)
8.1 间接调用函数
前面调用函数时,使用函数名加参数列表的形式调用。除此之外,还可以将函数名赋值给一个变量,再通过变量名加参数列表的形式间接调用函数,如例所示。

大家可能会疑惑:间接调用函数有何用处?这种用法可以使一个函数作为另一个函数的参数,如例所示。

另外,函数名还可以作为其他数据类型的元素,如例所示。

8.2 匿名函数
匿名函数是指没有函数名称的、临时使用的微函数。它可以通过lambda表达式来声明,其语法格式如下:

其中,“[arg1 [, arg2, …, argn]]”表示函数的参数,“表达式”表示函数体。lambda表达式只可以包含一个表达式,其计算结果可以看作是函数的返回值。虽然lambda表达式不允许包含其他复杂的语句,但在表达式中可以调用其他函数。
接下来演示lambda表达式的使用,如例所示。

在例中,第1行使用lambda表达式声明匿名函数并赋值给sum,相等于这个函数有了函数名sum,该行相当于以下代码:
使用lambda表达式声明的匿名函数也可以作为自定义函数的实参,如例所示。
此外,lambda表达式声明的匿名函数还可以作为内建函数的实参,如例所示。
lambda表达式表示一个匿名函数,也可以作为列表或字典的元素,如例所示。
8.3 闭包
在前面章节中,函数可以通过return返回一个变量。此外,函数也可以返回另外一个函数名,如例所示。
此外,还可以将f1()函数的定义移动到f2()函数中,这样f2()函数外的作用域就不能直接调用f1()函数,如例所示。
将一个函数的定义嵌套到另一个函数中,还有其他的作用,如例所示。

本文深入探讨了Python中的函数高级特性,包括间接调用函数,利用变量作为函数名实现间接调用。接着介绍了匿名函数(lambda表达式),如何用它创建简洁的微函数。然后详细阐述了闭包的概念,强调了它在函数嵌套中的作用,特别是当内层函数引用外层函数的变量时。进一步讨论了装饰器,它是增强函数功能的工具,允许在不修改原函数代码的情况下添加新功能。最后提到了偏函数,用于固定函数调用时的部分参数,以及Python的一些常用内建函数,如eval()、exec()、compile()、map()、filter()、zip()等。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



