6

我有一些看起来像这样的代码:

from pyparsing import Word, alphas, Optional, ...
# Do stuff ...
# And at the end, save a result to the outside world.
parser = ...

# Now use parser but don't use anything else from pyparsing again.

我喜欢调用的方便from <package> import <etc>,但我只希望它在非常小的代码段中使用。我担心我会造成命名空间污染,因为我在同一个文件中有许多这样的小片段。

处理这种情况的 Pythonic 方式是什么?我仍然只是在玩弄它,所以我宁愿不写和重写pyparsing.这么多次。

4

2 回答 2

12

控制命名空间污染的常用方法是

  1. 使用后删除变量
  2. 使用 __all__ 变量
  3. 使用 import-as 来强调变量名

这些技术都被标准库中的核心开发人员使用。例如十进制模块:

综上所述,这些技术使命名空间保持整洁。

于 2012-04-28T04:05:04.953 回答
8

一种简单的方法是使用函数范围来控制文件中的导入可见性:

def prepare_parser():
    from pyparsing import Word, alphas, Optional, ...
    # do stuff, and get the final thing to return
    return ...

parser = prepare_parser()
于 2012-04-28T04:03:26.900 回答