Python NameError:未定义f

Python NameError:未定义f,python,nameerror,Python,Nameerror,我似乎无法理解Python为什么会抛出错误。我只是个初学者。我正在使用的代码 def integral(startingx,endingx,numberofrectangles): width = (float(endingx) - float(startingx)) / numberofrectangles runningSum = 0 for i in range(numberofrectangles): height = f(s

我似乎无法理解Python为什么会抛出错误。我只是个初学者。我正在使用的代码

def integral(startingx,endingx,numberofrectangles):     
    width = (float(endingx) - float(startingx)) / numberofrectangles 
    runningSum = 0     
    for i in range(numberofrectangles):
        height = f(startingx + i*width)
        area = height * width
        runningSum += area
    return runningSum 
print integral (0,1,100) 
回溯是

Traceback (most recent call last):
  File "readprint_db.py", line 5, in <module>
    print integral (0,1,100)
  File "readprint_db.py", line 9, in integral
    height = f(startingx + i*width)
NameError: global name 'f' is not defined
回溯(最近一次呼叫最后一次):
文件“readprint_db.py”,第5行,在
打印积分(0,1100)
文件“readprint_db.py”,第9行,整数形式
高度=f(起点X+i*宽度)
NameError:未定义全局名称“f”
不知道如何解决这个问题

对不起,我忘了把剩下的都包括进去了。这部分在我发布的第一部分之前。请容忍我

def衍生物(f): def df(x,h=0.1e-5): 派生=(f(x+h)-f(x))/h 第二轮(德里夫,3) 返回df

def衍生物(x): h=1./1000。 上升=f(x+h)-f(x) 运行=小时 坡度=上升/运行 返回坡度


编辑:格式化

我相信您的意思是将函数作为参数传递给integrate,从而生成高阶函数:

def integral(f, startingx, endingx, numberofrectangles): # Riemann sum approximation

那么
f
应该是什么呢?您正在将
f()
用作函数,但没有在任何地方定义它。您从未在任何地方定义过f函数,只是调用了它