Как я могу использовать локальную переменную после ее возврата?

#python #variables #return #return-value #local

#python #переменные #Возврат #возвращаемое значение #Местные новости

Вопрос:

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

Вот мой код:

 import random

def random_phrase():
    """
    This function finds a random key (which is the type of phrase to be found) from the dictionary called categories and a random phrase from the list that corresponds to that key.
    """
    clue_phrase = random.choice(list(categories.keys()))
    print (clue_phrase)
    word_phrase = random.choice(categories[clue_phrase])
    return word_phrase 

random_phrase()

def phrase_of_blanks():
    blanks = ' '
    for i in word_phrase:
        if i == ' ':
            blanks  = '  '
        else:
            blanks  = '_'   ' '
    return blanks
phrase_of_blanks()
 

Комментарии:

1. Вы не можете использовать локальную переменную за пределами ее области видимости (если только она не захвачена как часть охватывающей области видимости в замыкании, но пока это неважно). Главное, что нужно понять, это то, что функции не возвращают переменные . Функции возвращают объекты / значения . Вы должны зафиксировать это возвращаемое значение в вызывающем, например, с другой переменной foo = bar()

Ответ №1:

Удалите строку

 random_phrase()
 

Поместите

 for i in random_phrase():
#in place of
for i in word_phrase:
 

Ответ №2:

Вы не сохраняете возвращаемое значение в переменной,

Изменить

 random_phrase()
 

Для

 word_phrase = random_phrase()