1

当我阅读文件时riak-python-client/riak/riak_object.py。在文件的底部,我看到了这个

from mapreduce import *

它有什么用?为什么只在文件顶部导入。

4

4 回答 4

2

这旨在将所有模块mapreduce放在riak_object名称空间中。如果将此导入放在 的顶部riak_object.py,则会出现错误,因为mapreduce导入RiakObjectfromriak_object尚未定义。

于 2012-10-25T07:37:22.770 回答
0

您可以import在文件中的任何位置使用 ;您只需要确保在导入模块之前不要尝试使用模块中的内容。

如果这实际上是文件中运行的最后一行,那么它将没有任何用途。如果它在文件的底部但在某个函数或方法中,这可能意味着该函数/方法不经常运行,并且作者不希望mapreduce每次运行程序时都需要导入的开销。

于 2012-10-25T07:15:06.453 回答
0

我不知道该项目的具体原因,但只是将导入放在文件的顶部。这使得依赖关系更容易跟踪,Python 的样式指南推荐使用它。

从技术上讲,语句导入的代码只有在语句执行import后才可用import。这意味着当您将它放在文件的底部时,您不能使用在该文件中导入的任何内容(在模块级别)。该文件中的函数可以使用导入......但这只是不好的做法。

于 2012-10-25T07:15:59.550 回答
0

唯一的原因是riak_object(似乎不需要来自 ? 的任何东西)将所有值(或由 指定的值)mapreduce带入其命名空间,以作为某种便利。__all__mapreduce

于 2012-10-25T07:17:34.843 回答