Django中的动态加载和静态加载模块

时间:2011-07-04 09:41:48

标签: python django django-models loading

Django中动态加载和静态加载模块之间有什么区别吗? 它的效率如何?谁能告诉我Django中动态加载和静态加载模块机制的原理?

2 个答案:

答案 0 :(得分:0)

首先,这是一个Python问题,而不是Django问题,因为模块是Python概念。

其次,在Python中没有静态加载这样的东西,因为它本质上是一种动态语言。

因此,在Python中加载模块总是动态的。

你唯一应该知道的是:

  • 导入模块后,执行代码;
  • 如果再次导入模块,Python会从第一次加载中获取引用,因此它很快并且不会再次执行代码;
  • 您可以在函数中使用import,但不推荐使用,并且导入的模块在功能范围之外不可用。

最后一个选项是“动态加载”最接近的选项,因为您可以选择在运行时导入的内容。

答案 1 :(得分:0)

由于python性质,所有代码都是动态加载(==执行)。

如果仅在运行时确定模块名称,则可以使用__import__功能:

s = "simplemodule" if use_simple else "extendedmodule"
mymodule = __import__(s)
mymodule.myfunction()

您还可以reload()以前加载的模块(例如,如果您更改了它的源代码)。