Я не думаю, что кто-то объяснил, как создать и установить глобальную переменную, имя которой само по себе является значением переменной.
Вот ответ, который мне не нравится, но, по крайней мере, он работает [1], обычно [2].
Я бы хотел, чтобы кто-нибудь показал мне лучший способ сделать это. Я нашел несколько вариантов использования, и я на самом деле использую этот уродливый ответ:
########################################
def insert_into_global_namespace(
new_global_name,
new_global_value = None,
):
executable_string = """
global %s
%s = %r
""" % (
new_global_name,
new_global_name, new_global_value,
)
exec executable_string ## suboptimal!
if __name__ == '__main__':
## create global variable foo with value 'bar':
insert_into_global_namespace(
'foo',
'bar',
)
print globals()[ 'foo']
########################################
Python exec следует избегать по многим причинам.
Примечание: обратите внимание на отсутствие ключевого слова «in» в строке «exec» («неквалифицированный exec»).
Повторный щелчок по нему отключает его (становится светло-синим), но строка всегда выделяется как точка останова (или точка останова возьмется). Визуальная индикация удобна, если вскоре вы обнаружите, что вам нужно снова установить ее. Отключенная точка останова в любом случае ведет себя точно так же, как отсутствие точки останова.
] Или, согласно Apple...[
] []"Синяя стрелка в желобе означает, что перед выполнением этой строки кода выполнение остановится. Чтобы временно отключить точку останова, щелкните по ней; она превращается из синей в серую, что указывает на то, что она отключена. Чтобы убрать точку останова, перетащите её за пределы водостока"[
].