我将我的常量(可以是一个dict。)分组并存储在一个单独的python文件中。例如。 parameters.py:
HARD_COPY=True
BOOKS={
2018:{"author":"Hugo"}
}
etc.
在源文件中,我写道:
import parameters as para
当然,我可以使用知道其名字的变量(para.BOOKS等)。 但我想展示他们的名字和价值观,无论这些名字是什么。
如果我写dir(para),我可以看到这些名字的列表。 但是我如何打印他们的价值观呢?
我想显示:
My defined variables in parameters.py :
HARD_COPY : True
BOOKS : {2018:{"author":"Hugo"}}
etc.
答案 0 :(得分:1)
如果你正在考虑存储常量(或配置变量),你应该考虑将它们存储为json
格式。
我们假设您有一个名为config.json
的配置文件,其中包含以下值
{
"HARD_COPY": true,
"BOOKS": {
"2018": {
"author": "Hugo"
}
}
}
您可以使用以下
从.py
文件加载这些值
import json
with open('config.json') as f:
data = json.load(f)
然后迭代这些值,您可以执行以下操作
Python 2.7
for key, val in my_books.iteritems():
print(key, val)
>>>('HARD_COPY', True)
>>>('BOOKS', {2018: {'author': 'Hugo'}})
Python 3
for key, val in my_books.items():
print(key, val)
>>> HARD_COPY True
>>> BOOKS {2018: {'author': 'Hugo'}}
答案 1 :(得分:1)
使用getattr
按名称访问其值。
import parameters as para
print('My defined variables in parameters.py : ')
for variable in dir(para):
if not variable.startswith('__'):
print(variable, ':', getattr(para, variable))
输出:
My defined variables in parameters.py :
BOOKS : {2018: {'author': 'Hugo'}}
HARD_COPY : True
答案 2 :(得分:0)
试试这个:
import parameters as para
for name in dir(para):
if not name.startswith('__'):
myvalue = eval('para.%s'%name)
print(name,"is",myvalue)
输出:
BOOKS is {2018: {'author': 'Hugo'}}
HARD_COPY is True
答案 3 :(得分:0)
假设这是一个“普通”模块,您可以使用__dict__
:
import parameters as para
for k, v in para.__dict__.items():
if k.isupper():
print("name:", k, "value:", v)
我使用过isupper()
,因为这是常量的约定(虽然它们不是真的)。
给出:
name: HARD_COPY value: True
name: BOOKS value: {2018: {'author': 'Hugo'}}
编辑感谢@ Aran-Fey