Область видимости в операторе exe c, которая создает переменные из словаря (Python) - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть этот бит кода:

from ast import literal_eval

# evil exec loop                                                                               
param_dict = literal_eval(sys.argv[1])                                                         

for key in param_dict.keys():                                                                  
    if type(param_dict[key]) != str:                                                           
        exec(key+"={}".format(param_dict[key]))                                                
    else:                                                                                      
        exec(key+"='{}".format(param_dict[key])+"'")

пожалуйста, не судите меня по моему использованию exe c. А) этот код предназначен только для меня, и я доверяю своим данным и Б) Я считаю, что постоянная ссылка на словарь в отличие от обычных переменных утомительна. При этом, если вы знаете лучший способ сделать это, я открыт для этого.

Теперь к моему вопросу. Я хотел бы взять этот код и поместить его в функцию в другом файле, а затем вызывать эту функцию только со словарем (или строкой, представляющей его) в качестве аргумента. Но когда я попробовал это, программа не может найти имена переменных. Я предполагаю, что эти переменные остаются в области действия функции, поэтому их нельзя увидеть за ее пределами. Есть ли способ обойти это (без использования глобальных)?

...