Хотя вы можете изменять глобальные переменные по имени, это, как правило, не то, что вам следует делать.
Однако, если вам действительно нужно сделать эти переменные глобальными (а не, например,, записи в словаре или свойствах класса ) и вы действительно не хотите писать несколько функций обновления, есть решение.
Согласно этому ответу , вы можете изменить словарь, возвращаемый globals
, который обновляет пространство имен модуля.
some_variable = None
def update(var, value):
globals()[var] = value
update('some_variable', 'some value')
print(some_variable) # Output: "some value"
Но если это вообще возможно, вам следуетизбегайте этого - есть много лучших способов написания кода, и это также оставляет место для более захватывающих ошибок.
away_score = 10
update('away_scoer', away_score + 1) # npote the typo
print(away_score) # It's still 10, but there was no error in Python.
update('update', print) # now updating prints instead
update('away_score', 11) # Prints "away_score 11"
print(away_score) # still 10
update('print', function_that_melts_your_computer) # probably a bad idea
У этого также есть более обыденные недостатки, такие как несчастный случай вашего редактора и разрушение завершения кода в некоторыхместа.