麻烦使用eval()和cython

Pet*_*art 4 python cython

我试图加速一些代码,然后我尝试使用cython编译一个类和一个函数

和哇!我还没有测量它,但它看起来至少快了10倍.

两天前我第一次看了cython,我印象非常深刻!

但是,我无法让eval()工作.

def thefirst(int a):
    d = eval('1+2+a')
    return d
Run Code Online (Sandbox Code Playgroud)

我将其编译为module1.pyd文件并使用python文件调用它:

from module1 import thefirst
x = thefirst(2)
print x
Run Code Online (Sandbox Code Playgroud)

返回:

NameError:未定义名称"a".

所有帮助表示赞赏.

Die*_*Epp 7

这是因为eval没有办法检查环境a.使用该locals函数将环境传递给它.

def thefirst(a):
    return eval('1+2+a', locals())
Run Code Online (Sandbox Code Playgroud)