Вернуть список из цикла while в функцию? - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь вернуть список my_list, созданный в функции make_list, для использования в функции print_elems.

Я получаю сообщение об ошибке

my_list не определен

для того, когда я прошу его напечатать, после вызова "make_list".

Что я делаю неправильно, пытаясь вернуть "my_list"?

def make_list():
    my_list = []
    print("Enter \"-999\" to return list.")
    x = int(input("Enter a number: "))
    while x != -999:
        my_list.append(x)
        x = int(input("Enter a number: "))
    return my_list

def print_elems(user_list):
    print(user_list, sep=' ')


make_list()
print(my_list)
print_elems(my_list)

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Вы пытаетесь получить доступ к локальной переменной my_list.Вместо этого вы должны использовать возвращаемое значение, присваивая его переменной:

some_name = make_list()  # assign function result to variable
print(some_name)
print_elems(some_name)

В примечании вы, вероятно, захотите немного изменить print_elems:

def print_elems(user_list):
    print(*user_list, sep=' ')

The * распаковывает список и передает его элементы в функцию print.В противном случае при передаче одного позиционного аргумента в print параметр sep никогда не будет использован.

0 голосов
/ 26 октября 2018

Вам необходимо присвоить возврат вашей функции переменной:

tata = make_list()
print(tata)

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


См. Краткое описание правил области видимости? и PyTut: области действия и пространства имен

...