一等函数

一等函数

在Python中,函数是一等对象。编程语言理论家把“一等对象”定义为满足下述条件的程序实体:

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

在Python中,整数、字符串和字典都是一等对象

把函数视作对象

Python函数是对象

# 创建并测试一个函数,然后读取它的__doc__属性,再检查它的类型
def factorial(n):  # 这是一个控制台会话,因此是在运行时创建一个函数
    '''return n!'''
    return 1 if n < 2 else n * factorial(n - 1)


factorial(42)
1405006117752879898543142606244511569936384000000000
factorial.__doc__  # __doc__是函数对象众多属性中的一个
'return n!'
type(factorial)  # factorial是function类的实例
function

也可以把factorial函数赋值给变量fact,然后通过函数名调用。还能把它作为参数传递给map函数。map函数返回一个可迭代对象,里面的元素是把第一个参数(一个函数)应用到第二个参数(一个可迭代对象,这里是range(11))中各个元素上得到的结果

fact = factorial
fact
<function __main__.factorial(n)>
fact(5)
120
map(fact, range(11))
<map at 0x1fe0f9adb80>
list(map(fact, range(11)))
[1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]

有了一等函数,就可以使用函数式风格编程。函数式编程的特点之一是使用高阶函数。

上一篇:3.7 matlab函数的递归调用


下一篇:王垠 40行代码