Новое в использовании функций в Python - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь понять, почему newNameList не определено:

ListofNames1 = ['Mark', 'Andrew']

ListofNames2 = ['Anjela', 'Lora']

names = ListofNames1

def greeting(names):
    newNameList = []
    for item in names:
        newNameList.append(str(names))
    return (names)
print(greeting(names))

def function2(newNameList):
    for each in newNameList:
        newNameList2.append(newNameList.upper())
    return (newNameList2)

print(function2(newNameList)) 

Вывод

['Mark', 'Andrew']
...
NameError: name 'newNameList' is not defined.

Произошла ошибка имени в последней строке кода.

Ответы [ 3 ]

1 голос
/ 06 марта 2020

newNameList определяется только в пределах function2. Поскольку оператор print не имеет отступа на том же уровне, что и function2, то newNameList невидим для него. Три переменные, определенные в области видимости верхнего уровня: ListofNames1, ListofNames1 и names. Это единственные три переменные, которые можно передать в function2 в операторе print.

1 голос
/ 06 марта 2020

Да, Вы можете сделать это.

Например:

def use_greeting_function(name):
   new_list_name = greeting(name)

Теперь new_list_name имеет выход функции greeting, и впоследствии вы можете использовать ее в функции.

0 голосов
/ 06 марта 2020
NameError: name 'newNameList' is not defined. 

говорит вам, что не так. Вы должны были определить newNameList вне функции greetings().

Я переписал ваш код:

ListofNames1 = ['Mark', 'Andrew']
ListofNames2 = ['Anjela', 'Lora']
names = ListofNames1

newNameList = []

def greeting(names):
    for item in names:
        newNameList.append(names)

    return names

print(greeting(names))


def function2(newNameList):
    newNameList2 = []

    for each in newNameList:
        newNameList2.append(str(newNameList).upper())

    return newNameList2

print(function2(newNameList))

И использование метода upper() в списке не работает. Сначала преобразуйте его в str.

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