首页 > 解决方案 > 当我将列表传递给另一个方法时,它返回 NoneType。我怎样才能解决这个问题?

问题描述

我正在尝试编写一个main()方法,该方法将调用另一个读取 .txt 文件中各个记录的方法;这就是loadFile()方法。我已经测试过该loadFile()方法有效并且它返回的列表是 ListType。但是,当我loadFile()在内部调用main()并尝试对生成的列表采取行动时,我会收到类似TypeError: 'NoneType' object is not subscriptable. 有人可以帮助我确保我从一种方法传递到下一种方法的列表仍然是 ListType 吗?

def loadFile(fileName):
    openFile = open(fileName, 'r')
    records = openFile.readlines()
    recordList = []
    for item in records:
        recordList.append(item.rstrip('\n'))
    print(recordList)
    openFile.close()

def main():
    nameFile = 'names.txt'
    names = loadFile(nameFile)
    print(names[12])

main()

标签: pythonpython-3.x

解决方案


您应该return从函数中获取值,而不是打印。

def loadFile(fileName):
    openFile = open(fileName, 'r')
    records = openFile.readlines()
    recordList = []
    for item in records:
        recordList.append(item.rstrip('\n'))
    openFile.close()
    return recordList

def main():
    nameFile = 'names.txt'
    names = loadFile(nameFile)
    print(names[12])

main()

如果您没有显式返回任何内容,Python 中的函数将始终返回None.


推荐阅读