Я новичок в python, и я хотел просто сменить переменные с помощью globals(), но по какой-то причине я продолжаю получать одинаковые outpu (1, 2, 3 вместо a, b, c) , Что здесь не так?Почему globals() не работает
cwp = "01"
aw_sg = "01"
a01 = 1
a02 = 2
a03 = 3
p01g01a01 = "a"
p01g01a02 = "b"
p01g01a03 = "c"
print a01, a02, a03
def load_db(a01, a02, a03, cwp, aw_sg):
a01 = globals()["p%sg%sa01" % (cwp, aw_sg)]
a02 = globals()["p%sg%sa02" % (cwp, aw_sg)]
a03 = globals()["p%sg%sa03" % (cwp, aw_sg)]
return a01, a02, a03
load_db(a01, a02, a03, cwp, aw_sg)
print a01, a02, a03
Вы фактически не хранить возвращаемое значение 'load_db' где-нибудь, и так как вы не отметили a01, a02, a03 и как' 'global' внутри load_db', глобальный охват-a01/и т.д. не являются перезаписывается. (Я предполагаю, что вы задаете это по чисто академическим соображениям и фактически не используете 'globals()' willy nilly, как это.) – senshin
Вы назначаете локальные переменные, называемые 'a01',' a02' и 'a03' внутри' load_db'. Это не изменяет глобальные переменные. Используйте возвращаемое значение, например. 'print load_db (a01, a02, a03, cwp, aw_sg)'. Использование имен реальных переменных также является хорошей идеей, и не использование 'globals()' является еще лучшей идеей. – Ryan
@ senshin yup Я использую этот пример, чтобы просто понять, как это работает – JeremyK