调用嵌套函数后发生NameError

时间:2018-11-11 05:38:37

标签: python list function file

因此,我将.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内容

  

你好,世界

     

123,456

这是关键字列表在打印时的外观:

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

3 个答案:

答案 0 :(得分:1)

尝试一下:

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)。但是在其他作用域中,您无法访问该变量,因此需要将其存储在某些内容中。

答案 1 :(得分:0)

您的GroupAdd, TextEditor, ahk_class Notepad++ GroupAdd, TextEditor, ahk_exe Code.exe GroupAdd, TextEditor, ahk_class Notepad F1:: IfWinActive ahk_group TextEditor GroupActivate, TextEditor, R else { list := "" ; windows are retrieved in order from topmost to bottommost: WinGet, id, list, ahk_group TextEditor Loop, %id% { this_ID := id%A_Index% WinActivate, ahk_id %this_ID% ; activate the most recently active window in this group break } } return 在函数keywordList中,而不是在函数splitKeyword()中。这就是为什么出现NameError的原因。

答案 2 :(得分:0)

关键字列表是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)