且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《Python数据科学指南》——1.13 将函数作为参数传递

更新时间:2022-09-18 21:32:51

本节书摘来自异步社区《Python数据科学指南》一书中的第1章,第1.13节,作者[印度] Gopi Subramanian ,方延风 刘丹 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.13 将函数作为参数传递

Python支持高阶函数功能:将一个函数作为另一个函数的参数传递。

1.13.1 准备工作

我们将前面一个例子中的函数square_input ()重写,以此演示一个函数是如何被作为另一个函数的参数进行传递。

1.13.2 操作方法

请看如何将一个函数作为另一个函数的参数进行传递。

from math import log

def square_input(x):
     return x*x

# 1.定义一个类函数,它将另外一个函数作为输入
# 并将它应用到给定的输入序列上。
def apply_func(func_x,input_x):
     return map(func_x,input_x)

# 2.这里使用apply_func()函数,并校验结果
a = [2,3,4]

print apply_func(square_input,a)
print apply_func(log,a)

1.13.3 工作原理

我们在第1步中定义了函数apply_func,它有两个变量参数,第1个是一个函数,第2个是一个序列。我们使用了map函数(后续章节将介绍)将给定的函数应用到序列中的所有元素。

接着,我们在列表上调用apply_func,先是square_input函数,然后是log函数,输出的结果如下。

[4, 9, 16]

你会发现,所有的列表元素都被求出了平方值,map函数将square_input函数应用到序列里的所有元素上。

[0.69314718055994529, 1.0986122886681098, 1.3862943611198906]

同样地,log函数也被应用到序列里的所有元素上。