Я потратил последние несколько часов на чтение здесь и в другом месте, а также экспериментировал, но я не совсем понимаю, что я уверен, это очень простая концепция: передача значений (как переменных) между различными функциями.
Например, я назначаю целую кучу значений списку в одной функции, а затем хочу использовать этот список в другой функции позже:
list = []
def defineAList():
list = ['1','2','3']
print "For checking purposes: in defineAList, list is",list
return list
def useTheList(list):
print "For checking purposes: in useTheList, list is",list
def main():
defineAList()
useTheList(list)
main()
Основываясь на моем понимании аргументов функции, я бы ожидал, что это будет делать следующее:
- Инициализировать "список" как пустой список; call main (это, по крайней мере, я знаю, что я прав...)
- В пределах defineAList() назначьте определенные значения в список; затем переведите новый список обратно в main()
- В main() вызовите useTheList (список)
- Поскольку "список" включен в параметры функции useTheList, я бы ожидал, что useTheList теперь будет использовать список, как определено defineAList(), а не пустой список, определенный перед вызовом main.
Однако это, очевидно, ошибочное понимание. Мой выход:
For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
Итак, поскольку "возврат", очевидно, не делает то, что я думаю, что он делает, или, по крайней мере, это не так, как мне кажется, это должно... что это на самом деле делает? Не могли бы вы показать мне, используя этот пример, что мне нужно сделать, чтобы взять список из defineAList() и использовать его в useTheList()? Я стараюсь лучше понимать вещи, когда вижу, что они происходят, но многие примеры правильной передачи аргументов, которые я видел, также используют код, который мне еще не знаком, и в процессе выяснения того, что происходит, я "На самом деле я не разбираюсь в этой концепции. Я использую 2.7.
ETA - в прошлом, задавая аналогичный вопрос, было предложено использовать глобальную переменную вместо локальных. Если это будет уместно и здесь - для целей класса, который я принимаю, нам не разрешено использовать глобальные переменные.
Спасибо!