给Python模块命名是不是不好;“全球”;或者其他关键词?
我继承了一些旧的Django代码,其中一个模块名为给Python模块命名是不是不好;“全球”;或者其他关键词?,python,django,Python,Django,我继承了一些旧的Django代码,其中一个模块名为global(INSTALLED\u APPS中的全名是'labweb.global'),其中包含了驱动首页和网站其他一些分散部分的模型和视图。然而,global是一个Python关键字,所以它闻起来……但它能工作 我99%肯定用关键字命名模块是个坏主意,但我有点惊讶它居然能工作。Django怎么不在乎呢?是的,这当然是个坏主意。当然,您不能直接导入这样的模块: import global # or any other keyword 只需在编
global
(INSTALLED\u APPS
中的全名是'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'>
导入导入库
>>>导入lib.import_模块(“全局”)
我是全球的!
还有其他方法可以做到这一点。不过,根本没有办法直接导入。我只是好奇。如何导入<代码>从labweb.global导入*?我认为您是对的,在Python中,
global
作为模块名绝对不合适。它会迫使你做一些棘手的事情,以避免与关键字冲突。我不会直接导入模块,Django会在settings.py的INSTALLED\u APPS
列表中将其作为字符串传递后(神奇地?)导入模块。代码中对的其他引用也使用字符串(URL名称等)@ShashankGupta,不,虚线名称中的任何关键字仍然是SyntaxError
。您不能直接导入任何此类模块。但是标准库中有一些导入工具可以通过将模块名称作为字符串传递来导入模块。我想这是可行的,因为django可能正在动态加载模块。简单的“导入全局”将给出语法错误。它不会影响常用关键字的使用,因为它被存储为dict,您可以使用其中的任何字符串。