您还可以欺骗python:
expression = "math.sin(v['x']) * v['y']"
exp_as_func = eval('lambda: ' + expression)
然后像这样使用它:
exp_as_func()
速度测试:
In [17]: %timeit eval(expression)
10000 loops, best of 3: 25.8 us per loop
In [18]: %timeit exp_as_func()
1000000 loops, best of 3: 541 ns per loop
附带说明一下,如果v
不是全局变量,则可以这样创建lambda:
exp_as_func = eval('lambda v: ' + expression)
并称之为:
exp_as_func(my_v)