Является ли следующее правильное понимание global
для изменяемых и неизменяемых объектов?
immutable1 = 'abc'
immutable2 = '123'
mutable = {}
def change():
mutable['CHANGED'] = 'CHANGED' # this will change the global variable mutable
global immutable1
immutable1 = 'abc-CHANGED' # this will change the global variable immutable1 because global has been called
immutable2 = '123-CHANGED' # this will not change the global immutable2 variable, because it's immutable and global has not bee declared
Единственным использованием global
для изменения глобальной неизменяемой переменной или когда-либо может использоваться вдругие ситуации?
Другой пример:
>>> m={}
>>> i='a'
>>>
>>> def change():
... m['a'] = i
... i = 'b'
...
>>> print(m,i)
{} a
>>> change()
UnboundLocalError: local variable 'i' referenced before assignment