......同时仍然让它在函数中可执行。
这背后的想法是我想创建一个求和函数。这是我到目前为止所做的:
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))
并获得数学常量 e ,或def W(x): return summation(1, 'inf', ((-n) ** (n - 1)) / factorial(n))
来获取Lambert W function。
我想到的只是将相应的算法作为字符串传递,然后使用exec
语句来执行它。但我不认为这会完成整个事情,使用exec
可能是用户输入的代码显然很危险。
答案 0 :(得分:5)
在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)