Следующий код не работает, я полагаю, потому что переменная locals () внутри понимания будет ссылаться на вложенный блок, где оценивается понимание:
def f():
a = 1
b = 2
list_ = ['a', 'b']
dict_ = {x : locals()[x] for x in list_}
Я мог бы использовать globals()
вместо этого,и кажется, что это работает, но это может привести к некоторым дополнительным проблемам (например, если в окружающей области видимости существует переменная с таким же именем).
Есть ли что-нибудь, что могло бы сделать словарь использующимпеременные точно в объеме функции f
?
Примечание: я делаю это, потому что у меня есть много переменных, которые я хотел бы добавить в словарь позже, но не хочу усложнять код, написав dict_['a']
вместо a
вТо время.