我刚刚开始使用 numexpr 的评估函数,但遇到了一个恼人的错误。
我希望它本身打印 sin(10),并且它做得非常好,但是如果我执行 sec(10),我会得到“TypeError: 'VariableNode' object is not callable”
示例代码:
import mpmath as mp
from numexpr import evaluate as ne
cos = mp.cos
sin = mp.sin
csc = mp.csc
sec = mp.sec
print(ne('cos(50)'))
>>> 0.9649660284921133
print(ne('sin(50)')
>>> -0.26237485370392877
print(ne('csc(50)')
>>> TypeError: 'VariableNode' object is not callable
print(ne('sec(50)')
>>> TypeError: 'VariableNode' object is not callable
当我使用 eval 时,它会返回正确的值,就像它应该的那样。
为什么会出现这种情况?是因为 numexpr 是 numpy 的扩展并自动从 numpy 获取其函数(numpy 没有 sec、csc、cot),因此不能从 mpmath 获取函数?
提前谢谢了!:)