Модификация - плохая идея, потому что в документации (на которую вы ссылаетесь) явно не указано:
Примечание: Содержимое этого словаря не должно изменяться;изменения могут не повлиять на значения локальных и свободных переменных, используемых интерпретатором.
Вам не нужно больше причин, чем это.
Если вы используете его каким-либо образомэто не изменяет никакие переменные, тогда вы будете в порядке, но я бы поставил под сомнение дизайн и посмотрел, есть ли лучший способ сделать то, что вы хотите.
В конкретном примере, на который вы ссылаетесьlocals - это на самом деле globals (), так как вы используете его в глобальной области видимости модуля.Это очень специфическое использование работает сейчас, и, хотя я ожидаю, что оно продолжит работать так же, как и с глобальными, вы можете вместо этого просто использовать глобальные.
Возможно, даже более чистое решение, без знания остальной части вашего дизайна, чтобы использовать обычный старый словарь для ваших переменных;затем используйте data ["x"] = значение вместо глобальных () ["x"] = значение.