<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
–>
在 Python 中,函数是一等对象。编程语言理论家把“一等对象”定义为满
足下述条件的程序实体:
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
–>
-
在运行时创建
-
能赋值给变量或数据结构中的元素
-
能作为参数传给函数
-
能作为函数的返回结果
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 25.0px Helvetica}
–>
把函数视作对象
Python 函数是对象。这里我们创建了一个函数,然后调用它,读取它的 __doc__ 属性,并且确定函数对象本身是 function 类的实例。
#创建一个函数,只有函数在调用的时候才会运行
def factorial(n):
'''returns n!'''
return 1 if n < 2 else n * factorial(n-1) #factorial(42)是函数function的实例
print(factorial(42))
print(type(factorial)) #函数众多属性中的其中一个~
print(factorial.__doc__)
以上代码执行的结果为:
1405006117752879898543142606244511569936384000000000
<class 'function'>
returns n!
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
–>
展示了函数对象的“一等”本性。我们可以把 factorial 函数赋值给变量 fact,然后通过变量名调用。我们还能把它作为参数传给map 函数。map 函数返回一个可迭代对象,里面的元素是把第一个参数(一个函数)应用到第二个参数(一个可迭代对象,这里是range(11))中各个元素上得到的结果。
<!–
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica}
–>