我试图加速一些代码,然后我尝试使用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".
所有帮助表示赞赏.
这是因为eval没有办法检查环境a.使用该locals函数将环境传递给它.
def thefirst(a):
return eval('1+2+a', locals())
Run Code Online (Sandbox Code Playgroud)