如何从外部编写带有变量的函数?

发布于 2021-01-29 14:09:56

希望您能提供帮助。我正在寻找一种编写稍后插入一个项目的函数的方法。让我给你看一个例子:

def general_poly(L):
        """ 
        L, a list of numbers (n0, n1, n2, ... nk)
        Returns a function, which when applied to a value x, returns the value 
        n0 * x^k + n1 * x^(k-1) + ... nk * x^0 
        """
        x = 1
        res = 0
        n = len(L)-1
        for e in range(len(L)):
            res += L[e]*x**n
            n -= 1
        return res

我以为我可以在x这里提供一个值,一旦我general_poly(L)(10)将其替换,那么x = 10显然就不那么容易了。我必须更改/添加什么才能使我的功能正常工作?函数如何知道乘法是x?谢谢你们的帮助!

关注者
0
被浏览
172
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    系统要求您返回一个函数,但返回的是计算得出的值:

    def general_poly(L):
        """ 
        L, a list of numbers (n0, n1, n2, ... nk)
        Returns a function, which when applied to a value x, returns the value 
        n0 * x^k + n1 * x^(k-1) + ... nk * x^0 
        """
        def inner(x):
            res = 0
            n = len(L)-1
            for e in range(len(L)):
                res += L[e]*x**n
                n -= 1
            return res
        return inner
    

    现在general_poly(L)(10)将执行您期望的操作,但是如果将其分配给一个值,它可能会更有用,因此可以多次调用它,例如:

    L = [...]
    fn = general_poly(L)
    print(fn(10))
    print(fn(3))
    

    您还可以重写inner为:

    def general_poly(L):
        return lambda x: sum(e*x**n for n, e in enumerate(reversed(L)))
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看