关于Web应用程序上的运行时间最少,在views.py
中保留导入的理想位置是什么假设我想验证并处理一些带有外部模块的表单条目。我目前的代码:
from django.shortcuts import render
from .forms import *
import re
import module1
import module2
def index(request):
form = MyForm()
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
#
#Process my stuff here using re, module1, module2
#
return render(request, 'index.html', context)
但是如果条件if form.is_valid():
失败,那么通过先导入模块re,module1,模块2它有什么用?或条件if request.method == 'POST':
失败?那是表格从未提交的时候。
在这些条件传递之后导入这些模块(因为实际需要它们时)会导致程序或webapp在这些条件失败时的运行时开销减少吗?在不需要时避免不必要的进口?
我的想法的Psuedo代码:
if form.is_valid():
import re
#Perform some regex matches and stuff
if (above re matches succeed):
import module1
#Process my stuff here using module1 here
#and so on importing modules only when they are required
建议使用哪一个并在网站上获得最佳效果?
答案 0 :(得分:4)
不要这样做。
没有理由像这样在代码中间导入。进口只进行一次;因为几乎可以肯定的是,在某些时候你的代码将遵循is_valid路径,你将需要导入,所以在那之前阻止导入没有任何好处。
事实上,这可能会使更少表现更好;而不是在流程启动时完成所有导入,您可以在某人的请求中进行此操作。
但无论如何,无论如何,差异可以忽略不计。为了便于阅读,请将您的导入放在最顶层。
答案 1 :(得分:-1)
文件顶部的导入模块完全正常,这样做recommended way。
它不会增加任何运行时开销,因为导入只执行了一些,而不是每次请求(如PHP)。