我可以在 python 中使用方程作为参数吗?



我正在用python制作一个图创建程序,需要将方程作为函数中的参数传递(根据需要创建图(,在该等式中,我需要一些变量在函数运行时发生变化。

感谢您帮助它的马奇赞赏。

我试图找到解决方案,但我不是那么好,所以我不明白,如果可以的话,有什么解释。

#inside a class and this is also simplified.
def function(self, e):
x = 0
for i in range(100):
print(e)
x += 1
classObj.function(x * 2)

我希望您能够在 e 参数中添加 x 变量,这样我就可以使其更灵活,但该变量是为循环创建的函数。

参数表达式在调用函数之前计算

。如果要传递动态内容,请使用回调函数。如果函数很简单,它可以写成 lambda。

def function(self, f):
for i in range(100):
print(f(i))
classObj.function(lambda x: x * 2)

我不确定我是否正确理解了你的问题,但在 Python 中你可以将函数作为参数传递。为了描述它,我们说函数是一等公民,或者一种语言支持高阶函数。

以下是如何实现它的示例:

class YourClass:
def function(self, e):
x = 0
for i in range(100):
result = e(x)  # you can call a function passed as a parameter
print(result)  # do something with a result
x += 1

def multiply_by_2(x):
return x * 2

def add_2(x):
return x + 2

obj = YourClass()
obj.function(multiply_by_2)  # just use function name without parenthesis
obj.function(add_2)  # you can also pass different function!

由于您尚未定义x,因此在调用classObj.function()时会抛出错误。您可以将公式作为字符串传入,并对其调用exec()eval()

例如:

def function(self, e):
x = 0
for i in range(100):
print(exec(e))
print(eval(e))# does same thing as above line
x += 1
classObj.function("x * 2")

eval()exec()之间的区别在于,eval()评估一个表达式,但exec()可以运行大块代码。我建议只使用必要的,所以exec()是矫枉过正的。

也许看到这篇关于将表达式传递给函数的文章,但我不确定这是否是你想要的。

最新更新