Почему не работает exec("global numb")?
У меня возник вопрос, как сделать переменную глобальной, не зная заранее её имени. Первое что мне пришло в голову, это использовать exec(), но, видимо, я не до конца понял как работает эта функция. Я попробовал:
def df(variable):
exec(f"global {variable}")
exec(f"{variable} = 1")
numb = 10
variable = "numb"
print(numb)
df(variable)
print(numb)
В моих мечтах вывод должен получиться
10
1
Однако выходит
10
10
Пожалуйста, подскажите что я делаю не так. Если exec() на такое не способен, то может быть есть другая функция, которая может это сделать.
PS: Если что, то это просто пример, в полном коде переменная variable задаётся путём ввода с клавиатуры, но там это тоже не работает((
Ответы (1 шт):
Автор решения: вася
→ Ссылка
Мечты сбываются!
def df(variable):
exec(f"global {variable}")
exec(f"{variable} = 1", globals())
numb = 10
variable = "numb"
print(numb)
df(variable)
print(numb)
Как указали в комментариях, exec(f"global {variable}") можно не писать.