Skip to main content
 首页 » 编程设计

python之为什么将函数作为参数传递会被认为是 'powerful'

2025年05月04日14lyj

我正在阅读 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()   

他说将函数作为参数传递是“强大的”,但我不明白为什么?

请您参考如下方法:

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

你还可以定义其他函数:

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

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

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