我继承了一些旧的 Django 代码,其中一个模块被命名为 global
(INSTALLED_APPS
中的全名是 'labweb.global'
) ,它包含驱动首页和站点其他一些分散部分的模型和 View 。然而,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'>
还有其他方法可以做到这一点。不过,根本没有办法直接导入。
关于python - 将 Python 模块命名为 "global"或其他关键字是否不好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19353171/