为什么将函数作为参数传递被认为是“强大的”?

2024-04-25 05:55:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在阅读Mark J.Johnson的Python编程简明介绍,偶然发现了一段代码,它使用省道来估计图形下的面积。代码运行得非常好,但是我很困惑,如果你可以直接调用函数,为什么你要把函数作为参数来传递。你知道吗

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()  

他说把一个函数作为参数传递是“强大的”,但我不明白为什么?你知道吗


Tags: 函数fromimportforreturnmaindeffunction
2条回答

f只是一个图函数。它不是唯一可以定义用来创建图形的函数。你知道吗

您还可以定义其他函数:

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

并将其传递到area()而不必改变该函数。area()足够通用,可以计算不同图形函数的面积,您所需要做的就是传入图形函数,让它计算该面积。你知道吗

如果您硬编码f而不是使用参数,您就不能再这样做了。你知道吗

我认为答案应该是显而易见的,尤其是在这种情况下:你可以为微积分之类的东西编写一个泛型函数,它对你传递的任何函数都有效。您可以通过提供新函数来修改正在集成的函数。对于其他操作(如绘图)也是如此。你知道吗

相关问题 更多 >