Ошибка NameE, возникающая после вызова вложенной функции - PullRequest
0 голосов
/ 11 ноября 2018

Итак, я разбил файл .txt на список списков (показан ниже). Однако, когда я пытаюсь запустить print(splitKeyword(keywords[1][0])), чтобы попытаться напечатать первый элемент второго списка / элемента в keywordList, я получаю ошибку: NameError: name 'keywordList' is not defined. Как я могу это исправить?

def functionOne(textFile):
        textFileVar = open(textFile, 'r')

    def splitKeyword(argument):
        keywordList = []
        for line in argument:
            keywordList.append(line.strip().split(','))
        return keywordList

    splitKeyword(textFileVar)
    print(keywordList[1][0])

results = functionOne("text1.txt")
print(results)

Это содержимое text1.txt / textFile / textFileVar

Привет, мир

123456

Вот как будет выглядеть список ключевых слов при печати:

[[hello, world], [123, 456]]

Ответы [ 3 ]

0 голосов
/ 11 ноября 2018

keywordlist - это локальная переменная для функции splitKeyword, которая возвращает его, чтобы вы могли напрямую использовать эту функцию и уменьшить код.

def functionOne(textFile):
    textFileVar = open(textFile, 'r')
    def splitKeyword(argument):
        keywordList = []
        for line in argument:
            keywordList.append(line.strip().split(','))
        return keywordList

    print(splitKeyword(textFileVar))

results = functionOne("text1.txt")
print(results)
0 голосов
/ 11 ноября 2018

Попробуйте это:

def functionOne(textFile):
        textFileVar = open(textFile, 'r')

    def splitKeyword(argument):
        keywordList = []
        for line in argument:
            keywordList.append(line.strip().split(','))
        return keywordList

    output = splitKeyword(textFileVar)
    print(output[1][0])
    return output

results = functionOne("text1.txt")
print(results)

посмотрите на return keywordList в splitKeyword функции. возвращает значение (keywordList). но в других областях вы не можете получить доступ к этой переменной, поэтому вам нужно сохранить ее в чем-то.

0 голосов
/ 11 ноября 2018

Ваш keywordList является локальным для функции splitKeyword(), а не для функции functionOne(). Вот почему вы получаете NameError.

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