Так как небезопасно изменять команду, возвращаемую функцией locals ()
>>> d={'a':6, 'b':"hello", 'c':set()}
>>> exec '\n'.join("%s=%r"%i for i in d.items())
>>> a
6
>>> b
'hello'
>>> c
set([])
, но использовать такой метод exec некрасиво. Вам следует изменить дизайн, чтобы вам не нужно было динамически добавлять в ваше локальное пространство имен
Изменить: См. Оговорки Майка по поводу использования repr в комментариях.
>>> d={'a':6, 'b':"hello", 'c':set()}
>>> exec '\n'.join("%s=d['%s']"%(k,k) for k in d)
>>> id(d['c'])
3079176684L
>>> id(c)
3079176684L
Попытка:
locals().update(my_dict)
EDIT:
gnibbler
сделал очень верное замечание, что локали не должны быть изменены (проверьте: http://docs.python.org/library/functions.html#locals). Тем не менее, в документации Python не говорится, что это небезопасно, там только говорится, что изменения локалей не могут повлиять на значения переменных. Прежде чем ответить на вопрос, я попробовал в своем Python 2.6 IDLE, что обновление локалей действительно работает, как в глобальной области видимости, так и внутри функции. Поэтому я не удаляю свой ответ, а вместо этого добавляю предупреждение, что это может работать при определенных (специфических для платформы?) обстоятельствах, но это не гарантировано.
Изменение locals () dict могло бы быть решением, но документы говорят, http://docs.python.org/library/functions.html #
Примечание. Содержимое этого словаря не должно изменяться; изменения могут не влиять на значения локальных и свободных переменных, используемых интерпретатором .
Итак, вопрос в том, зачем вам это вообще нужно? могут быть лучшие способы добиться того, чего вы пытаетесь достичь.
Также почему вы не можете напрямую обращаться к dict или назначать их переменным?