python - 将 Python 模块命名为 "global"或其他关键字是否不好?

标签 python django

我继承了一些旧的 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/

相关文章:

python - 忽略/跳过 numpy 数组中的值?

django - 模型层的数据验证?

python - django 时间序列 postgres 初学者

Python 套接字超时

python - 将 np.gradient 与日期时间一起使用

Python 的 Kivy FileBrowser 无法正确索引文件

python - 将不同版本的 python 与 virtualenvwrapper 一起使用

ManyRelatedField 的 Django REST Framework 序列化

django - 我可以强制 django 模型字段的 verbose_name 的首字母为小写吗?

python - Django channel 不会使用 CHANNEL_LAYERS 启动 redis 服务器