Ответ 1
Поскольку это может зависеть от реализации Python, сколько работы нужно для создания этого словаря.
В CPython globals хранятся только в другом сопоставлении, и вызов функции globals()
возвращает ссылку на это сопоставление. Но другие реализации Python могут создавать отдельный словарь для объекта по мере необходимости по требованию.
Это отражает функцию locals()
, которая в CPython должна создавать словарь по требованию, потому что локали обычно хранятся в массиве (локальные имена переводятся в доступ к массиву в байт-кодере CPython).
Итак, вы должны называть globals()
, когда вам нужен доступ к сопоставлению глобальных имен. Хранение ссылки на это сопоставление работает в CPython, но не учитывайте другое в других реализациях.