3

...同时仍然让它在函数中可执行。

这背后的想法是我想创建一个求和函数。这是我到目前为止所拥有的:

def summation(n, bound, operation):
    if operation is None and upper != 'inf':
        g = 0
        for num in range(n, limit + 1):
            g += num
        return g
    else:
        pass

但求和通常是关于无限收敛级数(我使用'inf'),对每个项进行运算。理想情况下,我希望能够编写print summation(0, 'inf', 1 / factorial(n))并获得数学常数edef W(x): return summation(1, 'inf', ((-n) ** (n - 1)) / factorial(n))获得Lambert W function

我想到的就是将适当的算术作为字符串传递,然后使用exec语句来执行它。但我不认为这会完成整个事情,而且exec与可能是用户输入的代码一起使用显然很危险。

4

1 回答 1

6

在 Python 中,函数是一等的,也就是说它们可以像任何其他值一样被使用和传递,所以你可以使用一个函数:

def example(f):
    return f(1) + f(2)

要运行它,您可以定义如下函数:

def square(n):
    return n * n

然后将其传递给您的其他函数:

example(square)  # = square(1) + square(2) = 1 + 4 = 5

如果它是一个简单的表达式,您还可以使用lambda避免必须定义一个新函数:

example(lambda n: n * n)
于 2013-06-22T02:55:17.680 回答