Как передать переменную списка обратно за пределы моей функции (Python) - PullRequest
0 голосов
/ 26 августа 2018

Я думал, что использование функции возврата приведет к тому, что переменная, помещенная после нее, будет передана за пределы моей функции (возвращено?).Похоже, нет, почему бы и нет?

Я пытаюсь написать некоторый код, который требует от меня составления списка из 5 элементов внутри функции, а затем передать этот список за пределы функции и выполнить с ней некоторую работу.Прямо сейчас у меня есть только заявление для печати, написанное за его пределами, просто пытаюсь увидеть, проходит ли оно вне моей функции, но в дальнейшем мне нужно будет сделать больше.Это говорит мне, что переменная не определена, поэтому я предполагаю, что она не передается.

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

#Gather data about elements and turn into a list to check agsint function list later

!curl  https://raw.githubusercontent.com/MicrosoftLearning/intropython/master/elements1_20.txt -o elements1_20.txt

elements_20 = open("elements1_20.txt","r")

elements_20.seek(0)

elements = elements_20.readline().strip()

element_list = []

while elements:
    element_list.append(elements)
    elements = elements_20.readline().strip()

print(element_list)



# define function to get user input and compile it into a list
def get_name():

    user_list = []

    while len(user_list) < 5:
        user_input=input("Name one of the first 20 items please kind sir: ")

        #check to make sure the input is unique 

        if user_input.lower() in user_list:
            print("please don't enter the same word twice")
        else:
            user_list.append(user_input.lower())

    return user_list


get_name()


print(user_list)

Примечание: мне нужна функция, чтобы не принимать никаких аргументов, поэтому я не могу использовать этометод как решение.

1 Ответ

0 голосов
/ 26 августа 2018

Вам необходимо сохранить возвращаемое значение из get_name() в переменную с именем user_list вне области действия функции, чтобы напечатать его:

#Storing the returned value from the function:
user_list = get_name()
print(user_list)

Без сохранения возвращаемого значения,Функция завершает себя, возвращает значение в стек, где оно ничем не захвачено, а затем оно впоследствии разыменовывается.Назначение user_list в теле функции применимо только внутри области действия функции.Как только он возвращается, программа больше не «видит» никакие переменные с именем user_list, что приводит к сбою оператора print().

...