Использование переменной вне функции (Python) - PullRequest
1 голос
/ 06 апреля 2020

, поэтому я снова начал изучать python, и сейчас я делаю мини-мов ie -рекомендатор. Я хочу, чтобы мой код был немного более понятным, поэтому я всегда пытаюсь использовать def, чтобы сделать код простым. Моя проблема:

def welcome():
    print("""Welcome to the low budget film recommender!
             Here you can tell me what kind of movies do you like or what movie did you watch
             and I'll suggest you a movie from my database according to that.""")
    name = input("But first I need to learn your name:>> ").capitalize()
    print(f"Nice to meet you {name}")
    return name

Я хочу использовать переменную имени вне функции (на самом деле внутри другой функции), но она дает мне NameError и говорит, что «имя» не определено. Как я могу это исправить и использовать переменную name вне функции?

Ответы [ 3 ]

3 голосов
/ 06 апреля 2020

Не рекомендуется объявлять ее как глобальную переменную (как рекомендовали другие ответы).

Вы должны go указать, где вызывается welcome (), и установить переменную с результатом ( который вы возвращаете внутрь добро пожаловать):

name = welcome()
print(f"This is the result of welcome: {name}")
0 голосов
/ 06 апреля 2020

Вы можете объявить переменную name как глобальную переменную.

Код -

def welcome():
    global name
    print("""Welcome to the low budget film recommender!
             Here you can tell me what kind of movies do you like or what movie did you watch
             and I'll suggest you a movie from my database according to that.""")
    name = input("But first I need to learn your name:>> ").capitalize()
    print(f"Nice to meet you {name}")
    return name


def second_function():
    welcome()
    print(name) #prints the value of name in this function which was defined in the welcome()

second_function()
0 голосов
/ 06 апреля 2020

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

#name as a global variable 
name = input("But first I need to learn your name:>> ").capitalize()

def welcome():
    print("""Welcome to the low budget film recommender!
             Here you can tell me what kind of movies do you like or what movie did you watch
             and I'll suggest you a movie from my database according to that.""")
    # name = input("But first I need to learn your name:>> ").capitalize()
    print(f"Nice to meet you {name}")
    return name

print(welcome())

def message():
    return name

print(message())

Дайте мне знать, если вам все еще нужна помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...