Python, 函数本身也是一个对象函数既可以赋值,也可以用作其他函数的参数,还可作为其他函数的返回值。
使用函数变量
Python的函数也是一种值:所有函数都是function对象,这意味着可以把函数本身赋值给变量,就像把整数、浮点数、列表、元组赋值给变量一样。
当把函数赋值给变量之后,接下来程序也可通过该变量来调用函数。例如如下代码:
# 定义一个乘方的函数def pow(base, exponent): result = 1 for i in range(1, exponent + 1): result *= base return result# 将pow函数复制给my_fun,则my_fun可被当成pow使用my_fun = powprint(my_fun(3, 4)) # 输出81# 定义一个计算面积的函数def area(width, height): return width * height# 将area函数赋值给my_fun,则my_fun可被当成area使用my_fun = areaprint(my_fun(3, 4)) # 输出12
使用函数作为函数形参
有时候需要定义一个函数,该函数大部分计算逻辑都能确定,但某些处理逻辑暂时无法确定——这意味着某些程序代码需要动态改变,如果希望调用函数时,能动态传入这些代码,那么就需要在函数中定义函数形参,这样即可在调用该函数时传入不同的函数作为参数,从而动态改变这段代码。
Python支持像使用其他参数一样使用函数参数,例如如下程序:
# 定义函数类型的形态,其中fn是一个函数def map(data, fn): result = [] # 遍历data列表中的每个元素,并使用fn函数对每个元素进行计算 # 然后将计算结果作为新数组的元素 for e in data: result.append(fn(e)) return result# 定义一个计算平方的函数def square(n): return n * n# 定义一个计算立方的函数def cube(n): return n * n * n# 定义一个计算阶乘的函数def factorial(n): result = 1 for index in range(2m n + 1): result *= index return resultdata = [3, 4, 9, 5, 8]print("原数据: