每天进步一点点:Python中使用函数作为参数

每天进步一点点:Python中使用函数作为参数

在我的一个Python小脚本中,我有一个变态的需求,在一个函数中调用不同的函数,这个时候最简单的方法就是将待调用的函数作为参数传入。


(图源:bing.com

函数也是对象

之所以可以这样操作的原因是因为Python中一切皆是对象,举例说,我们可以定义个简单的函数并打印相关信息:

上述代码将输出类似如下信息:


3065566744

函数作为参数

有了上述分析,我们就可以大胆的将函数作为参数传入其它函数中了,下边我们实现了简单的加法(add)、减法函数(sub)。同时我们定义了一个函数计算(calc),这个函数接受一个函数以及其它两个参数。

可见,我们可以通过调用calc函数,并指定用于进行计算的函数(add或者sub)来计算对应的数值。上述代码输入结果如下:

3
-1

函数参数的可变参数

上述例子中,我们直接在calc函数定义中指定了参数,并传递给其中的函数调用(add或sub),但是如果我们没法确定其内被调用的函数有多少个参数,或者有些参数是关键字参数,可怎么办呢?

答案是很简单的,我们只需将其传入到calc函数即可。

其中:

第一句代表将位置参数打包给args(tuple类型),将关键字参数打包给kwargs(dict)类型。第二句函数调用括号内则代表将对应的数据解包。

将上述代码改进一下:

结果如下:

(1, 2)
{}
3

(1, 2)
{}
-1

(1, 2, 3)
{}
6

()
{‘x’: 1, ‘y’: 2, ‘z’: 3}
6

Python 内置函数

在Python内置函数中,有几个函数使用了函数作为参数,比如:

  • map()
    map(function, iterable, ...)
  • filter()
    filter(function, iterable)
  • reduce()
    reduce(function, iterable[, initializer])

本文就不做深入介绍了。


This page is synchronized from the post: 每天进步一点点:Python中使用函数作为参数

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×