Установить глобальные переменные в функции

У меня есть проблема, когда я устанавливаю некоторые глобальные переменные внутри функции. Но когда я обращаюсь к этим глобальным переменным вне функции (в основной части скрипта), эти глобальные переменные никогда не устанавливались?

Почему следующие глобальные переменные всегда равны 0 и не 1? Как я могу установить глобальные переменные в моей функции?

currentUserClientID             = 0
currentUserMaxLicences          = 0
currentUserActivatedLicences    = 0

def setGlobals():
    currentUserClientID             = 1
    currentUserMaxLicences          = 1
    currentUserActivatedLicences    = 1
    print "Set Globals"
    print currentUserClientID
    print currentUserMaxLicences
    print currentUserActivatedLicences

setGlobals()

print "Global Values"
print currentUserClientID
print currentUserMaxLicences
print currentUserActivatedLicences

Выход:

Set Globals
1
1
1
Global Values
0
0
0

2 ответа

Решение

Просто используйте global ключевое слово:

def setGlobals():
    global currentUserClientID, currentUserMaxLicences, currentUserActivatedLicences
    currentUserClientID             = 1
    currentUserMaxLicences          = 1
    currentUserActivatedLicences    = 1
    print "Set Globals"
    print currentUserClientID, currentUserMaxLicences, currentUserActivatedLicences

Вы должны объявить переменные как глобальные. Положить global ключевое слово перед каждым объявлением переменной внутри функции.

def setGlobals():
    global currentUserClientID
    global currentUserMaxLicences
    global currentUserActivatedLicences
    currentUserClientID = 1
    currentUserMaxLicenses = 1
    currentUserActivatedLicenses = 1
    print "Set Globals"
    print currentUserClientID
    print currentUserMaxLicences
    print currentUserActivatedLicences
Другие вопросы по тегам