繁体   English   中英

调用嵌套函数后发生 NameError

[英]NameError occurring after calling nested function

所以我将一个 .txt 文件拆分为一个列表列表(如下所示)。 但是,当我尝试运行print(splitKeyword(keywords[1][0]))来尝试打印print(splitKeyword(keywords[1][0]))列表中第二个列表/元素的第一个元素时,出现错误: 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]]

尝试这个:

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)

查看splitKeyword函数中的return keywordList 它返回值( keywordList )。 但在其他范围内,您无法访问该变量,因此您需要将其存储在某处。

您的keywordList是函数splitKeyword()本地函数,而不是函数functionOne() 这就是您收到 NameError 的原因。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM