【发布时间】:2016-06-06 12:40:19
【问题描述】:
我想做以下事情(python3):
在模块settings.py:
message = 'Hello'
在模块__main__.py:
from . import settings
def dict_from_module(module):
...
return d
print(dict_from_module(settings))
运行它应该产生:
{'message': 'hello'}
是否有将模块转换为字典的规范方法?
编辑
使用vars(settings) 可以提供大量内部信息:
{
'__builtins__': {
...
},
'__cached__': 'xxx/__pycache__/settings.cpython-34.pyc',
'__doc__': None,
'__file__': 'xxx/settings.py',
'__loader__': <_frozen_importlib.SourceFileLoader object at 0x7f87fc192518>,
'__name__': 'xxx.settings',
'__package__': 'xxx',
'__spec__': ModuleSpec(...),
'message': 'bye'
}
我不想要/不需要。我可以将其过滤掉(通过删除以__ 开头的键),但如果有可接受的方法,我想避免乱搞。
【问题讨论】:
-
@vaultah:谢谢,但这提供了很多我不想要/不需要的内部属性
-
我认为没有不包括以某种方式过滤掉预定义值的解决方案。另外,您需要解决边界情况,例如当模块声明变量
__doc__时该怎么办。
标签: python python-3.x dictionary module namespaces