Python 下的变量覆盖

最近调试这样一过,总说找不到 pickle 这个变量。如果在使用前 import,又是可以的。

后来才发现问题,因为代码后面也使用了 pickle 这个变量。想来 python 是首先扫描全部的变量并且声明它们了。

import pickle

def foor()

    file = open('foo', 'r')
    data = pickle.load(file)
    
    for pickle in glob.glob('*.pickle'):
    	...

修复方法是改为:

    for file in glob.glob('*.pickle'):