Ответ 1
Когда вы выполняете CHARNAME = name
в функции setName
, вы определяете его только для этой области. то есть к нему нельзя получить доступ за пределами функции. Следовательно, глобальный vriable CHARNAME
(тот, который имеет значение "Unnamed"
), нетронутым, и вы продолжаете печатать его содержимое после вызова функции
Фактически вы не переписываете глобальную переменную CHARNAME
. Если вы хотите, вы должны глобализовать переменную CHARNAME
в функции setName
, поставив global CHARNAME
, прежде чем определить ее:
def setName(name):
global CHARNAME
CHARNAME = name
print CHARNAME
В качестве альтернативы вы можете return
значение CHARNAME
от функции:
def setName(name):
return name
CHARNAME = setName('1234')
Конечно, это бесполезно, и вы также можете сделать CHARNAME = '1234'