Как заставить аргумент присваивать значение переменной?

#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:

Есть два способа:

  1. возврат к удаленной функции с использованием return loadvar и вне функции

     variable = sl(v,variable1,l)
      
  2. вы можете использовать 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)