我继承了一些旧的 Django 代码,其中一个模块被命名global
(全名INSTALLED_APPS
inbeing 'labweb.global'
),其中包含驱动首页和站点其他一些分散部分的模型和视图。然而,global
是一个 Python 关键字,所以这闻起来……但它有效。
我大约 99% 确定在关键字之后命名模块是一个坏主意,但我有点惊讶它完全有效。Django 怎么好像不在乎?
是的,这当然是个坏主意。当然不能直接导入这样的模块:
import global # or any other keyword
SyntaxError
只是在编译时引发。但也许这就是重点?也就是说,也许设计者想要确保模块不能直接导入(但只能通过诡计)。我不知道——我只是想在那里大方一点;-)
这可能是导入此类模块的最简单方法。这是文件global.py
:
print "I'm global!"
进而:
>>> import importlib
>>> importlib.import_module("global")
I'm global!
<module 'global' from 'global.py'>
还有其他方法可以做到这一点。但是,根本无法直接导入。