Python一直在引用过时的变量

时间:2014-03-31 14:22:58

标签: python linecache

我有一个奇怪的问题,这是我尝试解释:

我正在创建一个程序,打开一个txt文件,然后使用以下命令linecache.getline(path,number)读取该文件的一行,在函数完成后,我使用commmand linecache.clearcache。

如果我然后在文本文件中更改某些内容,则会一直返回预先更改的行。

以下是我正在使用的代码(我知道它真的很漂亮)

def SR(Path,LineNumber):    
    returns = lc.getline(Path,LineNumber)      
    x = np.array([])
    y = np.array([])
    words = returns.split()
    for word in words:
        x = np.append([x],[word])

    for i in range(len(x)):
        t = float(x[i])
        y = np.append([y],[t])
    return y
    del x
    del y
    del t
    del words
    lc.clearcache()

1 个答案:

答案 0 :(得分:5)

return语句之后将不再执行任何操作。如果您想致电clearcache,则需要在return声明之前调用它。

此外,作为附注,您的del语句也不会做任何事情,即使它们被放置在return之前。 del实际上只是递减gc中的引用计数器,这将在解释器退出函数作用域时发生。