max*_*max 38 python coding-style
偶尔我想在Python中加载延迟模块.通常因为我想保持运行时间要求或启动时间较低并将代码拆分为子模块会很麻烦.一个典型的用例和我目前首选的实现是这样的:
jinja2 = None
class Handler(...):
...
def render_with_jinja2(self, values, template_name):
global jinja2
if not jinja2:
import jinja2
env = jinja2.Environment(...)
...
Run Code Online (Sandbox Code Playgroud)
我想知道:有没有规范/更好的方法来实现懒惰模块加载?
bgp*_*ter 59
您没有理由手动跟踪导入 - VM维护已导入的模块列表,并且导入该模块的任何后续尝试都会导致在sys.modules中进行快速dict查找而不执行任何其他操作.
您的代码与之间的区别
def render_with_jinja2(self, values, template_name):
import jinja2
env = jinja2.Environment(...)
Run Code Online (Sandbox Code Playgroud)
为零 - 当我们点击该代码时,如果jinja2
尚未导入,则导入该代码.如果已经存在,则继续执行.
Gle*_*ard 23
class Handler(...):
...
def render_with_jinja2(self, values, template_name):
import jinja2
env = jinja2.Environment(...)
...
Run Code Online (Sandbox Code Playgroud)
无需缓存导入的模块; Python已经做到了.
归档时间: |
|
查看次数: |
18031 次 |
最近记录: |