这可能更像是一个关于Python本身如何导入方法的问题,虽然我在表面层面上理解,但我并没有真正深入理解.
一个极其简化的例子可能会让事情更加清晰.在下面两个例子中,执行速度会有明显的差异吗?
例1
# views.py
from app_name.models import *
def add_item(request, name, category):
item = Item(name=name, category=category)
item.save()
return HttpResponseRedirect('/')
例2
# views.py
from app_name.models import *
from app_name.items import add_new_item
def add_item(request, name, category):
item = add_new_item(request, name, category)
return HttpResponseRedirect('/')
# items.py
def add_new_item(request, name, category):
item = Item(name=name, category=category)
item.save()
return item
我应该再次补充说,这是一个极其简化的例子,并不反映实际的现实世界决定.我只是想了解Python的工作原理,以及示例2是否会明显变慢,如果是这样,在什么情况下.
谢谢.
解决方法:
正如其他人已经指出的那样,你的例子不会有任何区别,因为导入只会发生一次.
更重要的是,你应该确保不做例如.函数内部的任何导入,如果它是可以避免的,因为每次执行函数时都会重做这些导入!
如果你想拥有清晰且可维护的代码,那么处理你的导入结构就更为重要了,像app_name.models import *这样的通配符导入是非常邪恶的,你应该避免它!
另见例如.这post!
标签:python,django
来源: https://codeday.me/bug/20190721/1495110.html