#python
#python
Вопрос:
Итак, я пытаюсь создать функцию сохранения, используя модуль shelve. Пока это мой код.
def sl(value=None,var,loadvar=None,s_l):
global loadvar
gamedata=shelve.open('game')
if s_l=='s':
gamedata[var]=value
gamedata.close()
if s_l=='l':
loadvar=gamedata.get(var)
gamedata.close()
Итак, как мне заставить функцию передавать значение, которое она получает в этой строке loadvar=gamedata.get(var)
, переменной вне функции (имя переменной вводится как loadvar)
Например, есть переменная с именем variable1, и у меня есть значение, сохраненное в файле gamedata под именем v.
Затем я запускаю функцию следующим образом:
sl(v,variable1,l)
Теперь значение переменной 1 должно быть равно v.
Как мне это сделать?
Комментарии:
1.
return loadvar
?..
Ответ №1:
Есть два способа:
-
возврат к удаленной функции с использованием
return loadvar
и вне функцииvariable = sl(v,variable1,l)
-
вы можете использовать
globals()
def sl(value=None,var,loadvar=None,s_l): global loadvar gamedata=shelve.open('game') if s_l=='s': gamedata[var]=value gamedata.close() if s_l=='l': globals()['loadvar']=gamedata.get(var) gamedata.close()
затем вне функции после ее вызова вы можете использовать
loadvars
где угодно
Комментарии:
1. Спасибо! решение с использованием return сработало, хотя второе решение выдает ошибку — ‘SyntaxError: имя ‘loadvar’ является параметром и глобальным’
2. поскольку loadvar — это системная функция, вы должны изменить ее на другое имя и создать экземпляр перед функцией
var = None
, а затемglobals()['var']=gamedata.get(var)