我应该上课吗?(Python)

2024-06-10 15:27:35 发布

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

我试图编写一个包含一些数学函数的小Python模块。例如,它可能包含以下函数:

def quad(x, a, b, c):
    return a*x**2 + b*x + c

您可能会注意到它包含几个参数(即。a, b, c)除了变量{}。现在,如果我把它放在一个文件中并简单地导入它,最终用户将不得不总是用参数和变量调用函数。因此,我想创建一个这样的类:

^{pr2}$

因此,最终用户可以将其用作:

q = quad(p, q, r) 
eq = q.eq      

这样做对吗?我对题目感到非常抱歉,因为我想不出更好的题目了!在


Tags: 模块文件函数参数returndef数学eq
2条回答

这似乎是对类的完美合理使用。实际上,当程序涉及可以建模为具有状态的对象时,应该考虑使用类。在这里,多项式的“状态”就是系数ab,和{}。在

您还可以使用Python的__call__特殊方法来将类视为函数本身:

class quad:
    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c

    def __call__(x):
        return self.a * x**2 + self.b * x + self.c

q = quad(p, q, r)
q(x)

还有另一种方法,可以稍微简洁一点,就是返回一个函数,并将这些系数放入其中。这本质上是一个讨好的例子,正如提克图拉提到的:

^{pr2}$

或使用lambda语法:

def quad(a, b, c):
    return lambda x: a * x**2 + b * x + c

然后可以这样使用:

q = quad(p, q, r)
q(x)

看起来您正在搜索类似currying的内容。在

或许this question可以帮你。在

相关问题 更多 >