擅长:python、mysql、java
<p>回答动态自然的问题,不,不是真的。生成的代码对象仍然被解释;相同的字节码仍在运行。在</p>
<p>我见过的compile()(和代码生成)最有用/最令人印象深刻的用法是在Jinja2中。实际上,它从模板生成Python代码,然后使用compile以“本机”(native)(==解释器)的速度运行(如果有意义的话)。在</p>
<p><a href="https://github.com/mitsuhiko/jinja2/blob/master/jinja2/environment.py#L506" rel="nofollow">https://github.com/mitsuhiko/jinja2/blob/master/jinja2/environment.py#L506</a></p>
<p>相比之下,比如说,django.template,它在“用户空间”中执行变量查找等(同样,可以说,隐喻有点奇怪)。在</p>
<p><a href="https://github.com/django/django/blob/master/django/template/base.py#L752" rel="nofollow">https://github.com/django/django/blob/master/django/template/base.py#L752</a></p>