3

我继承了一些旧的 Django 代码,其中一个模块被命名global(全名INSTALLED_APPSinbeing 'labweb.global'),其中包含驱动首页和站点其他一些分散部分的模型和视图。然而,global是一个 Python 关键字,所以这闻起来……但它有效。

我大约 99% 确定在关键字之后命名模块是一个坏主意,但我有点惊讶它完全有效。Django 怎么好像不在乎?

4

1 回答 1

3

是的,这当然是个坏主意。当然不能直接导入这样的模块:

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'>

还有其他方法可以做到这一点。但是,根本无法直接导入。

于 2013-10-14T03:43:01.497 回答