为什么认为'powerful'将函数作为参数传递?

Why is it considered 'powerful' to pass a function as a parameter?

我正在阅读 Mark J.Johnson 在 Python 中编写的 A​​ Concise Introduction to Programming,我偶然发现了一段代码,它使用飞镖来估计图下的面积。代码运行得非常好,但我很困惑,如果您无论如何都可以调用函数,为什么还要将函数作为参数传递。

from random import uniform
from math import exp

def area(function , a ,b ,m ,n = 1000 ):   #changed parameter for better understanding
    hits = 0
    total_area = m * (b-a)
    for i in range(n):
        x = uniform(a,b)
        y = uniform(0,m)
        if y <= function(x):
           hits += 1

    frac = hits / float(n)
    return frac * total_area

def f(x):
    return exp(-x**2)

def g(x):          #new function
    return exp(-x**2) + 2

def main():
    print area(f,0,2,1)
    print area(g,0,2,1)
main()  

他说将函数作为参数传递是 'powerful' 但我不明白为什么?

我认为答案应该很明显,尤其是在这种情况下:您可以为诸如微积分积分之类的东西编写一个通用函数,它适用于您传入的任何函数。您可以通过提供一个修改您正在集成的函数新功能。对于绘图等其他操作也是如此。

f不过是一个图形函数。它不是您可以定义用于创建图形的唯一函数。

您还可以定义其他函数:

def g(x):
    return 2 * x ** 2 + x + 5

并将其传递给 area() 而无需更改该函数 area() 足够通用来计算不同图形函数的面积,您需要做的就是传入图形函数让它计算该面积。

如果您硬编码 f 而不是使用参数,您将无法再这样做。