У меня есть файл, constants.py
, который содержит кучу глобальных констант. Есть ли способ, которым я могу захватить все из них как dict, только для этого файла?Получить глобальные переменные из файла как dict?
ответ
Это должно быть просто:
import constants
print(constants.__dict__)
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__
Одна вещь, которую я могу думать, используя вычисленное значение в качестве ключа - но тогда есть '' getattr' и setattr' функции. – cji
Ну, я могу ответить на этот вопрос для моего текущего проекта (хотя моя проблема заключалась в функциях, а не в переменных): нам пришлось ссылаться на переменную (функция, в моем случае) на три соединения сокета, соединение USB и радиосигнал (это полный путь от вызова функции к выполнению функции). Целевому назначению нужен словарь со строками: пары функций, чтобы знать, какую функцию вызывать, когда задано только имя функции и значения параметров. Более конкретно, мы соединили строку: function, а затем парный байт: строка, которая позволяет нам спарить byte: function (сильно сокращая размер пакета). –
Я передаю константы моему шаблону ... часть 'constants_dict' будет выпадать, и я могу использовать мои константы напрямую. – mpen
Ничего себе, это проще, чем мой ответ. – tgray