首页 > 源码中闭包的问题,求大神解救。。

源码中闭包的问题,求大神解救。。

我在看源码的时候遇到了这个:

loader = self.get_file_loader(value)

然后找到get_file_loader()函数:

def get_file_loader(self, filename):
        return lambda x: (os.path.basename(filename), self._opener(filename))

里面的_opener()函数是:

def _opener(self, filename):
        return lambda: (
            open(filename, 'rb'),
            datetime.utcfromtimestamp(os.path.getmtime(filename)),
            int(os.path.getsize(filename))
        )

貌似这用到了闭包,当执行get_file_loader(value)的时候会返回一个lambda函数,但是lambda里面的参数是什么呢?请问调用这个loader是不是要loader(x)这样,那x是什么呢?
还有一个同样的问题,_opener()返回的也是个lambda()函数,那在get_file_loader()中怎么调用呢

问题有点多。。。 跪求大神解决,谢谢了~


我也不知道那个 x 是什么,因为根本没地方提到它,而且它也被函数忽略掉了。

「会返回一个函数」,所以它会返回一个函数,而不附带任何参数。被返回的函数需要一个叫 x 的参数(然后它忽略了它),

get_file_loader 里并没有调用 _opener 的返回值。

【热门文章】
【热门文章】