2010-08-11 1 views

ответ

5

Это должно быть просто:

import constants 
print(constants.__dict__) 
+0

Ничего себе, это проще, чем мой ответ. – tgray

2
import constants 

constants_dict = {} 
for constant in dir(constants): 
    constants_dict[constant] = getattr(constants, constant) 

Я не уверен, что вижу это. Как писать constants_dict['MY_CONSTANT'] все лучше/проще/читабельнее, чем constants.MY_CONSTANT?

EDIT:

На основе комментариев, я вижу некоторый потенциал используется в настоящее время.

Вот еще один способ написать выше, в зависимости от того, насколько вы компактны.

constants_dict = dict((c, getattr(constants, c)) for c in dir(constants)) 

EDIT2:

cji для победы! constants.__dict__

+0

Одна вещь, которую я могу думать, используя вычисленное значение в качестве ключа - но тогда есть '' getattr' и setattr' функции. – cji

+0

Ну, я могу ответить на этот вопрос для моего текущего проекта (хотя моя проблема заключалась в функциях, а не в переменных): нам пришлось ссылаться на переменную (функция, в моем случае) на три соединения сокета, соединение USB и радиосигнал (это полный путь от вызова функции к выполнению функции). Целевому назначению нужен словарь со строками: пары функций, чтобы знать, какую функцию вызывать, когда задано только имя функции и значения параметров. Более конкретно, мы соединили строку: function, а затем парный байт: строка, которая позволяет нам спарить byte: function (сильно сокращая размер пакета). –

+0

Я передаю константы моему шаблону ... часть 'constants_dict' будет выпадать, и я могу использовать мои константы напрямую. – mpen