使用Python中的partial()代替函数

时间:2019-07-16 20:32:01

标签: python function

我有以下代码对我有用。我的问题是从总体上讲为什么有效? partial()函数如何知道difference_quotient()中的f是一个函数。在partial()中它被替换为x*x,这意味着return(x*x(x+h)-x*x(x))/h。但这会改变输出蜂鸣声。

from functools import partial
def difference_quotient(f, x, h):
    return(f(x+h)-f(x))/h
def square(x):
    return x*x

derivative_estimate1 = partial(difference_quotient, square, h=0.00001)

print(derivative_estimate1(5))

1 个答案:

答案 0 :(得分:1)

因此partial是一个类,它将生成一个新函数,其中预先填充了一些参数(换句话说,您不需要提供它们)。传递给partial的第一个参数是您将要运行的函数,在您的情况下为difference_quotient。然后,将square函数作为实际的“第一个”参数传递给difference_quotient,并通过关键字指定h。然后,当您运行derivative_estimate1时,它将运行difference_quotient(square, 5, h=0.00001),其中从您的新呼叫中传入5。

对于位置参数,它将从左到右填充,但是由于您指定了h = 0.00001,所以它填充了h而不是x,这意味着当您再次调用该函数时,唯一可以提供的参数是{{ 1}}。

如果您仅尝试像这样将x传递到difference_quotient

partial

然后像这样运行它:

derivative_estimate1 = partial(difference_quotient)

它会抱怨,因为您没有传递足够的参数。

编辑: 为了更好地直接回答关于Python的问题,知道它是一个函数:

Python本质上不了解变量。它只知道您打算将print(derivative_estimate1(5))用作函数。

如果我这样拨打电话:

f derivative_estimate1 = partial(difference_quotient, 5, h=0.00001)

我收到一个错误,指出Python试图在数字上调用函数。

print(derivative_estimate1(5))

Python并没有“神奇”地“知道”其功能。它只是说:“嘿,您正在尝试调用传入的该参数,因此它必须是一个函数。”

  

在partial()中,它将替换为x * x

这不是真的。 TypeError: 'int' object is not callable作为函数传入,然后您只需在代码中调用该函数即可。

我希望为您清除一切。

相关问题