<p>如果使用实现尾部调用优化的<a href="http://coconut.readthedocs.io/" rel="nofollow noreferrer">Coconut</a>transpiler对代码进行预处理,则它们完全等效(与未处理的更快版本一样快),因此可以使用更方便的样式。在</p>
<pre><code># Save berna1111's code as rk4.coco; no modifications necessary.
$ coconut target 3 rk4.coco & python3 rk4.py
50007 function calls in 0.055 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.097 0.097 <string>:1(<module>)
40000 0.038 0.000 0.038 0.000 rk4.py:243(f)
1 0.000 0.000 0.000 0.000 rk4.py:246(RK4)
10000 0.007 0.000 0.088 0.000 rk4.py:247(<lambda>)
1 0.010 0.010 0.097 0.097 rk4.py:250(test_RK4)
1 0.000 0.000 0.097 0.097 {built-in method builtins.exec}
2 0.000 0.000 0.000 0.000 {built-in method numpy.core.multiarray.empty}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
50006 function calls in 0.057 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.057 0.057 <string>:1(<module>)
40000 0.030 0.000 0.030 0.000 rk4.py:243(f)
10000 0.019 0.000 0.049 0.000 rk4.py:265(rk4_step)
1 0.007 0.007 0.057 0.057 rk4.py:273(test_rk4)
1 0.000 0.000 0.057 0.057 {built-in method builtins.exec}
2 0.000 0.000 0.000 0.000 {built-in method numpy.core.multiarray.empty}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
</code></pre>