首页 > 科技 > 函数:python中的一等对象

函数:python中的一等对象

#python##python打卡##Python数学编程#

什么是一等对象?

一等对象需要满足以下条件:

  • 在运行时创建;
  • 能赋值给变量或数据结构中的元素;
  • 能作为参数传给函数;
  • 能作为函数的返回结果;

在python中,整数、字符串和字典都是一等对象,而下面我们介绍的是一等对象“函数”。

将函数视作对象

可以明确,python函数是对象。为什么这么说呢?我们下面来一一解答这个问题。

创建函数

def factorial(n):    return 1 if n < 2 else n * factorial(n-1)

如上,我们创建了factorial函数。

函数逻辑:如果n小于2,返回1;如果n大于等于2,则循环执行n*factorial(n-1),直到factorial(n-1)返回1为止。

调用函数

赋值n=4后调用factorial函数。

factorial(4)24

结果返回的是24。可能会有人问,24这个结果是怎么计算出来的呢?有这样疑惑的人,可能对factorial函数的业务逻辑没有理解透彻,在这里我们一起来看下。

factorial(4),函数执行的过程是:当n=4,执行4*factorial(3);然后执行factorial(3),返回3*factorial(2);继续执行factorial(2),返回2*factorial(1)。

大家知道,factorial(1)返回的结果是1,那么整体来看,factorial(4)=4*3*2*1=24。

如果n更大,比如是123,就按照上述的逻辑,不断循环执行,直到返回确定的结果。

检查factorial的类型

type(factorial)function

通过factorial类型的检查结果可知,factorial是function类的实例,而检查方法,就如上述代码所示,使用type()方法。

一等对象:函数

接下来介绍函数作为一等对象的特性。

首先,将函数赋值给对象。

基于上面的factorial函数,把其赋值给对象fact,然后通过变量名来调用factorial函数。

In [1]: fact=factorialIn [2]: factOut[2]: 

其次,使用变量名调用函数。

In [3]: fact(4)Out[3]: 24

从使用变量名调用函数生成的结果来看,与直接调用函数的结果是一致的。至少,从这里来看,函数可以赋值给变量,然后通过变量名进行调用。

map函数

函数还可以作为参数传给map函数。map函数返回一个可迭代对象,里面的元素是把第一个参数(一个函数)应用到第二个参数(一个可迭代对象)中各个元素上得到的结果。

In [1]: map(factorial,range(9))Out[1]: In [2]: list(map(factorial,range(9)))Out[2]: [1, 1, 2, 6, 24, 120, 720, 5040, 40320]In [3]: list(map(fact,range(9)))Out[3]: [1, 1, 2, 6, 24, 120, 720, 5040, 40320]

有了一等函数后,我们就可以使用函数式风格进行python编程。


本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/301244.html